問題描述:在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 類文件中,結果是無效的,不能解決,所以這種寫法我初步認為只能解決普通類的注入問題,緣由還待深究。