Spring Boot-自动连线MongoClient

Spring Boot-自动连线MongoClient,spring,spring-boot,autowired,Spring,Spring Boot,Autowired,我现在很困惑,我想在我的一个控制器类中使用@Autowired MongoClient属性,但没有成功。棘手的是@Autowired正在从我的@RestController工作 @RestController public final class WebController { /** mongoClient */ @Autowired private MongoClient mongoClient; <- here it's working ... ... } 注意:在前

我现在很困惑,我想在我的一个控制器类中使用@Autowired MongoClient属性,但没有成功。棘手的是@Autowired正在从我的@RestController工作

@RestController
public final class WebController {

  /** mongoClient */
  @Autowired
  private MongoClient mongoClient; <- here it's working ...
...
}

注意:在前面提到的MongoUsersDAO中,自动连接的东西根本不起作用,我也尝试从application.properties中获取一个简单的属性,但没有成功

出现问题是因为您在
WebController
类中调用了
new MongoUserDAO()
,正如您在问题下方的评论中提到的那样。如果手动实例化一个对象,并且使用
@Autowired
对字段进行了注释,则该字段将不会使用预期实例实例化

mongoserdao
直接注入到您的
WebController
类,如下所示,Spring将为您处理
MongoClient
注入到
mongoserdao

网络控制器

@RestController
public final class WebController {

    /** Service/Repository class*/
    @Autowired
    private MongoUsersDAO dao; 

    @GetMapping("/all")
    public String getAll(){
        dao.callSomeMethod();
     }
}
猫鼬道

@Repository
public final class MongoUsersDAO {

  /** mongoClient */
  @Autowired
  private MongoClient mongoClient; 
...
}

奇怪。有日志吗?任何你称之为新MongouserDao()的地方。奇怪的是,为什么DAO类用@Controller注释?我也试着用服务、组件等注释它。当出现新请求时,会在WebController中调用新的MongouserDao()。(这是一个测试实现)这就是问题所在。不要调用新的MongoUserDao()。如果你这样做,自动布线就不会发生。为什么?如果我想使用它,我必须以某种方式实例化它,不是吗?已经有一个通过DAO类的
@Service
@Component
可用的实例了为什么要再次实例化它?如果您这样做,那么自动布线将不会再次发生(谢谢:)
@RestController
public final class WebController {

    /** Service/Repository class*/
    @Autowired
    private MongoUsersDAO dao; 

    @GetMapping("/all")
    public String getAll(){
        dao.callSomeMethod();
     }
}
@Repository
public final class MongoUsersDAO {

  /** mongoClient */
  @Autowired
  private MongoClient mongoClient; 
...
}