SpringBoot自定義條件注解

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


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


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


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


標(biāo)紅是因為idea校驗規(guī)則 不影響編譯運行 具體原因不知....

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

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

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

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

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

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

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