MongoTemplate无法自动注入

本文探讨了在Spring Boot中如何处理控制器间的调用,特别是当MongoTemplate对象在跨控制器传递时遇到的空指针问题。通过实例说明了如何正确注入和传递Mongotemplate以确保数据库操作的正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先检查jar是否引入错误

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
    <version>2.4.4</version>
</dependency>

假如还是报错没有注入的错误 或者空指针
在这里插入图片描述
在这里插入图片描述
关于 spring 使用 mongodb 的 mongotemplate 对象操作数据库,对象注入问题(即该对象能否正常的调用相应的CRUD方法来处理数据)
通过 spring 框架,直接调用一些处理对象的方法和数据库交互, http 接口从 controller 层调用开始, 如果是:controller --> service --> dao --> entity 这个流程正常调用,则:

(1)controller1 --> service1 --> dao1 -->entity1

(2)controller1 --> service2 --> dao2 -->entity2 (类推 3、4、5……都可以正常执行)

但是如果:

(3)controller1 --> controller2 --> service1 --> dao1 -->entity1

(4)controller1 --> controller2 --> service2 --> dao2 -->entity2

会产生:这种由于逻辑需要,需要先在同一 controller 层,先调用其它 controller 类(直接 new 该类处理一下数据),再回来执行自己实体类操作(或者其他实体类操作)的时候,这种情况下,controller2 里面的 mongotemplate 对象,这个时候是一个 null 对象,是不能正常调用该对象对应的操作数据库的方法,来执行自己本身的逻辑的,也就是说,这个时候调用 controller2 类里面的方法,都是不能正常执行的!

解决方法:想要 controller2 在 controller1 里面调用能都正常执行,由于这时候,mongotemplate 在 controller2 中是 null 值,只要在 controller1 中把 mongotemplate 对象传入给 controller2 中即可!(可以通过在 controller2 中添加构造方法,在 controller1 中 new controller2(MongoTemplate mongotemplate) 时候把 mongotemplate 对象传入 controller2 ,即可解决该问题!)

【http 通过 controller 进来的 mongotemplate 对象才会注入 spring ,才能正常使用,如果是通过其他 controller 类来调用同层的 controller 里面的 mongotemplate ,则该对象是 null 值,不可使用 !而从 controller 调用 service 这种不同层的,则可以正常使用!】

因为我的数据插入接口是通过mqttController 调用mongodbController然后进行插入数据的
在这里插入图片描述

然后正常http请求mongodb的是可以注入的
在这里插入图片描述
有两种解决方案
1调用控制类的时候把数据带过去
2.在自己第一个类在一次的注入需要的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要一百块

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值