Springboot 在@Configuration注解的勒種 使用@Autowired或者@value注解 讀取.yml屬性失敗


springboot中@value注解,讀取yml屬性失敗

問題場景:

  配置ShrioConfig時,想注入.yml的參數進行配置

解決辦法:

  如果注釋掉shiroEhcacheManager 以下所有bean的創建,項目能啟動,當我@Bean(name = "lifecycleBeanPostProcessor")創建這個bean的時候就拋出了上面的異常。這么分析過來問題應該出在這個bean上。

  百度了一下,LifecycleBeanPostProcessor用於在實現了Initializable接口的Shiro bean初始化時調用Initializable接口回調,在實現了Destroyable接口的Shiro bean銷毀時調用 Destroyable接口回調。

  而我在創建的EhCacheManager 正是實現了Initializable接口,官方的在配置上面的說明大概意思就是 使用@Configuration配置,會在上下文初始化的時候強制的注入一些依賴。導致一下不可知的初始化。尤其是創建BeanPostProcessor 和 BeanFactoryPostProcessor的時候(LifecycleBeanPostProcessor正是BeanPostProcessor 的子類)。

  應該將這些創建Bean的方法前面加上static。讓使用configuration的類在沒有實例化的時候不會去過早的要求@Autowired和@Value
進行注入。
  最后解決問題很簡單,只要在創建LifecycleBeanPostProcessor的方法變為靜態static方法。


免責聲明!

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



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