首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Autowired vs @Autowired with Setter

@Autowired vs @Autowired with Setter
EN

Stack Overflow用户
提问于 2018-08-09 04:26:32
回答 3查看 74关注 0票数 1

我有一个spring启动应用程序,我正在Web插件中使用它。

在一节课上,我有:

代码语言:javascript
复制
package com.test.company
@Component
@RestController
public class CompanyService {

   @Autowired
   private MongoTemplate mongoTemplate;

   @Autowired
   private Environment env;

在另一节课上,我有:

代码语言:javascript
复制
package com.test.company
@Component
@RestController
public class CustomerSignUpService {

   private static MongoTemplate mongoTemplate;

   @Autowired
   private Environment env;

   @Autowired
   public void setMongoTemplate(MongoTemplate mongoTemplate) {
          this.mongoTemplate = mongoTemplate;
   }

这两个类都可以工作,但是如果我尝试像在CompanyService类中那样将mongo注入到CusomterSignUpService类中,env会被注入得很好,但是mongo不会注入,并且如果我尝试使用它,我会得到一个空指针异常。

有什么想法吗?Main包是com.test

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-09 04:34:33

我认为您的Controller可能需要如下所示(从属性中删除static ):

代码语言:javascript
复制
package com.test.company
@Component
@RestController
public class CustomerSignUpService {

   @Autowired
   private MongoTemplate mongoTemplate;

   @Autowired
   private Environment env;

   ...
   ...
}
票数 4
EN

Stack Overflow用户

发布于 2018-08-09 04:49:03

您可以在属性和设置器中使用@Autowired,但您的属性必须是实例变量,而不是静态变量。

所以这样做,你的代码应该运行得很好:

代码语言:javascript
复制
package com.test.company
@Component
@RestController
public class CustomerSignUpService {

   private MongoTemplate mongoTemplate;

   @Autowired
   private Environment env;

   @Autowired
   public void setMongoTemplate(MongoTemplate mongoTemplate) {
          this.mongoTemplate = mongoTemplate;
   }

请注意,static保留字取自您的属性声明。

票数 3
EN

Stack Overflow用户

发布于 2019-02-07 08:06:54

从属性中移除static并在不使用它的情况下尝试

代码语言:javascript
复制
package com.test.company
@Component
@RestController
public class CustomerSignUpService {

   @Autowired
   private MongoTemplate mongoTemplate;

   @Autowired
   private Environment env;

   ...
   ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51755118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档