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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM