Springboot實現根據條件切換注入不同實現類的示例代碼
最近有個一需求需要根據外界環(huán)境的屬性(操作系統(tǒng) || yml屬性 || 其他bean的狀態(tài)) 來實現啟動時注入兩套不同的實現類, 實現切換.
實現啟動時條件注入分2步:
第一步 使用@Conditional(參數為 True false條件實現類 需要你自己實現)注解
@Conditional(RabbitMqCondition.class) public class RabbitmqSMSMsgServiceImpl extends RabbitmqBasicMsgService { // @Autowired(required = false) // DefaultMQProducer producer; @Override public void sendToYourTaskQueue_Step2(PnsMessage pnsMessage) { // TODO rabbitmq 實現SMS消息推送 } }
第二步 實現自定義的條件類接口Condition 實現matches方法:
我這里判斷的是spring配置文件里的屬性, 其實可以判斷非常廣泛的東西, 并不只限于屬性.
public class RabbitMqCondition implements Condition { @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { return "rabbitmq".equals(conditionContext.getEnvironment().getProperty("mq.type")); } }
application.yml 可以切換屬性
mq: type: rabbitmq
如果要是有多個符合條件的bean 利用@Service(value=“區(qū)別開來”)
到此這篇關于Springboot實現根據條件切換注入不同實現類的示例代碼的文章就介紹到這了,更多相關Springboot 根據條件切換注入不同實現類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Spring Cloud Feign作為HTTP客戶端調用遠程HTTP服務的方法(推薦)
在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發(fā)者完全感知不到這是遠程方法,更感知不到這是個HTTP請求,具體內容詳情大家參考下本文2018-01-01springboot2.5.2與 flowable6.6.0整合流程引擎應用分析
這篇文章主要介紹了springboot2.5.2與 flowable6.6.0整合流程引擎應用分析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07SpringBoot整合RocketMQ批量發(fā)送消息的實現代碼
這篇文章主要介紹了SpringBoot整合RocketMQ批量發(fā)送消息的實現,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-04-04ajax實時監(jiān)測與springboot的實例分析
本文將介紹如何使用 AJAX 技術結合 Spring Boot 構建一個實時反饋用戶輸入的應用,我們將創(chuàng)建一個簡單的輸入框,當用戶在輸入框中鍵入文本時,應用將異步地向后端發(fā)送請求,感興趣的朋友跟隨小編一起看看吧2024-07-07關于elasticsearch的match_phrase_prefix查詢詳解
這篇文章主要介紹了關于elasticsearch的match_phrase_prefix查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03