mongoTemplate无法被自动注入问题及解决方案

2019-04-26 18:34:50  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、背景

       今天在调用XX接口时,需要把返回数据存放到mongoDB中,但是在进行mongoTemplate.save(obj);时报空指针异常。


二、问题出现场景

    1、在静态方法中调用注入的静态变量为null

    2、在测试方法中new一个service类然后发现在service中的bean注入为null (网上有相应通过配置解决的方案)


三、解决方案

    1、先使用@Component来注入服务

    2、然后再使用@Autowire来注入service的Bean

    3、使用@PostConstruct注解,他可以在加载servlet时运行一次然后我们把service的Bean对象储存下来


四、相关释义

    1、@Componnet:一般来说当我们的类(泛指各种组件)不属于@Controller、@Service等,但是我们又想把他

        加入到我们的应用中的时候,我们就可以直接在类上面用次注解(Bean是修饰方法的)。

    2、@PostConstruct:用来修饰一个费静态的void()方法,在Bean创建完成后会默认执行@PostConstruct修饰的方法。

        Bean加载 -> @Autowire注入 -> 执行@PostConstruct修饰的方法


五、附上关键代码段

    @Component

public class PolicysyncService {

@Autowired
private MongoTemplate mongoTemplate;

private static PolicysyncService policysyncService;

@PostConstruct
public void init() {
policysyncService = this;
policysyncService.mongoTemplate = this.mongoTemplate; // 后面既可以使用policysyncService.mongoTemplate来进行操作 }
}




更多精彩请关注guangmuhua.com


最新评论:

跑不了,是错的
2020-08-24 02:04:18
1楼
2020-08-24 02:02:20
2楼
啥,啥,啥,这都是些啥
2019-04-28 20:59:00
3楼