SpringBoot自定義條件注解

有時(shí)我們?yōu)榱耸钩绦蚋屿`活 需要多個(gè)類實(shí)現(xiàn)同一個(gè)接口,到注入時(shí)不希望通過指定屬性的名稱或者類型來進(jìn)行注入 如下圖:


兩個(gè)類同時(shí)實(shí)現(xiàn)了ISkill接口 在注入時(shí) 編譯會(huì)有錯(cuò)誤提示 無法定位具體的實(shí)現(xiàn)類


該問題可以通過自定義條件注解來解決 可以通過實(shí)現(xiàn)Condition接口并實(shí)現(xiàn)其中的方法 如圖 (具體返回值可根據(jù)自己具體業(yè)務(wù)決定)


通過配置類在注入時(shí)使用@Conditional(ConditionDiana.class)


標(biāo)紅是因?yàn)閕dea校驗(yàn)規(guī)則 不影響編譯運(yùn)行 具體原因不知....

此時(shí)在依賴注入時(shí)就可以將正確的類型注入到IOC容器中了

@Conditional 該注解提供給我們一個(gè)自己可以控制注入到IOC容器的bean的類型?

有人說可以通過@Autowired()和@Qualifier("")來解決 為什么要這么大費(fèi)周章 因?yàn)檫@兩個(gè)注解是通過IOC容器自動(dòng)幫我們實(shí)例化 實(shí)例化的過程我們沒辦法靈活的操控需要實(shí)例化的bean 雖然可以通過構(gòu)造方法和setter方法控制我們需要實(shí)例化的bean 但是當(dāng)我們需要靈活決定需要注入的類型時(shí)

@Configuration和@Bean以及@Conditional結(jié)合起來就更加靈活了

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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