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

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

問題場景:spring

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

解決辦法:spa

  若是註釋掉shiroEhcacheManager 如下全部bean的建立,項目能啓動,當我@Bean(name = "lifecycleBeanPostProcessor")建立這個bean的時候就拋出了上面的異常。這麼分析過來問題應該出在這個bean上。接口

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

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

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

相關文章
相關標籤/搜索