解決Spring boot整合shiro無(wú)法獲取yml自定義屬性問(wèn)題

背景

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

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

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

解決方法

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

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

image.png

image.png

LifecycleBeanPostProcessorBeanPostProcessor的子類,參照上面的說(shuō)法,應(yīng)該將其設(shè)置為static方法獲取Bean。
這樣不會(huì)觸發(fā)配置類的初始化,如果配置類過(guò)早初始化,則@Autowired與@Value會(huì)無(wú)效!

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容