1. 程式人生 > >Spring boot下@Autowired 注入為 NULL的問題

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