Spring boot下@Autowired 注入为 NULL的问题
Posted MoMoweiduan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot下@Autowired 注入为 NULL的问题相关的知识,希望对你有一定的参考价值。
问题描述:在springboot项目中集成quartz时,需要使用到一个import org.springframework.scheduling.quartz.SchedulerFactoryBean这个类,并需要自动注入,在测试代码时,发现无法注入到普通.class文件中,后台报错提示:空指针异常。通过断电调试,发现时SchedulerFactoryBean这个类为NULL。
问题解决方案:
1.根据springboot 框架的注入方式检查,@Autowired 注解正确,因为引用的框架本身的类,不需要在SchedulerFactoryBean类文件上加上@Component,所以本身没错。
2.采用另外的方式进行解决:
@Autowired private SchedulerFactoryBean schedulerFactoryBean; private static QuartzManager quartzManager; /** * 通过@PostConstruct实现初始化bean之前进行的操作 * @desc 初始化操作,得到QuartzManager实例 * @Date 2019年1月7日 */ @PostConstruct public void init() { quartzManager = this; quartzManager.schedulerFactoryBean = this.schedulerFactoryBean; }
其中 QuartzManager 类就是该类本身,通过“quartzManager = this; ”可以看出来。以后使用“schedulerFactoryBean” 就直接用“quartzManager.schedulerFactoryBean”来代替。
这个解决方案的原理还不甚理解,但是可以获取到对象。尝试过将该种写法放在abstract class 类文件中,结果是无效的,不能解决,所以这种写法我初步认为只能解决普通类的注入问题,缘由还待深究。
以上是关于Spring boot下@Autowired 注入为 NULL的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 类之间正确注入 @Autowired?
解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题