Spring boot下@Autowired 注入為 NULL的問題
阿新 • • 發佈:2019-01-09
問題描述:在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 類檔案中,結果是無效的,不能解決,所以這種寫法我初步認為只能解決普通類的注入問題,緣由還待深究。