解決Spring boot整合shiro無法獲取yml自定義屬性問題

背景

最近使用SpringBoot整合shrio時,針對于一些配置,例如:超時、密碼重試次數等配置,需要單獨配置在yml中,方便部署時變更。

但是卻遇到獲取不到y(tǒng)ml中自定義屬性問題,一直顯示null。

經過測試發(fā)現(xiàn)在配置了LifecycleBeanPostProcessorBean的時候,shiro的配置總是優(yōu)先于spring boot獲取yml步驟前,因此shiro中如果有用到y(tǒng)ml中的配置,一直是獲取不到的。

解決方法

LifecycleBeanPostProcessor作用于在實現(xiàn)了Initializable接口的Shiro bean初始化時調用Initializable接口回調,在實現(xiàn)了Destroyable接口的 Shiro bean 銷毀時調用 Destroyable接口回調。

https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core中有一個解釋如下:

image.png

image.png

LifecycleBeanPostProcessorBeanPostProcessor的子類,參照上面的說法,應該將其設置為static方法獲取Bean。
這樣不會觸發(fā)配置類的初始化,如果配置類過早初始化,則@Autowired與@Value會無效!

因此解決辦法就是將獲取LifecycleBeanPostProcessor這個bean的方法設置為static!
接下來,就可以正常的在@Configuration類中使用@Autowired注解了。
自定義yml屬性順利注入!

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容