Springboot實現(xiàn)根據(jù)條件切換注入不同實現(xiàn)類的示例代碼
最近有個一需求需要根據(jù)外界環(huán)境的屬性(操作系統(tǒng) || yml屬性 || 其他bean的狀態(tài)) 來實現(xiàn)啟動時注入兩套不同的實現(xiàn)類, 實現(xiàn)切換.
實現(xiàn)啟動時條件注入分2步:
第一步 使用@Conditional(參數(shù)為 True false條件實現(xiàn)類 需要你自己實現(xiàn))注解
@Conditional(RabbitMqCondition.class)
public class RabbitmqSMSMsgServiceImpl extends RabbitmqBasicMsgService {
// @Autowired(required = false)
// DefaultMQProducer producer;
@Override
public void sendToYourTaskQueue_Step2(PnsMessage pnsMessage) {
// TODO rabbitmq 實現(xiàn)SMS消息推送
}
}
第二步 實現(xiàn)自定義的條件類接口Condition 實現(xiàn)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ū)別開來”)
到此這篇關(guān)于Springboot實現(xiàn)根據(jù)條件切換注入不同實現(xiàn)類的示例代碼的文章就介紹到這了,更多相關(guān)Springboot 根據(jù)條件切換注入不同實現(xiàn)類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringAMQP消息隊列(SpringBoot集成RabbitMQ方式)
這篇文章主要介紹了SpringAMQP消息隊列(SpringBoot集成RabbitMQ方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
記一次springboot服務(wù)凌晨無故宕機問題的解決
這篇文章主要介紹了記一次springboot服務(wù)凌晨無故宕機問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
springboot在服務(wù)器上的幾種啟動方式(小結(jié))
這篇文章主要介紹了springboot在服務(wù)器上的幾種啟動方式(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09

