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ū)別開來”)
到此這篇關于Springboot實現(xiàn)根據(jù)條件切換注入不同實現(xiàn)類的示例代碼的文章就介紹到這了,更多相關Springboot 根據(jù)條件切換注入不同實現(xiàn)類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringAMQP消息隊列(SpringBoot集成RabbitMQ方式)
這篇文章主要介紹了SpringAMQP消息隊列(SpringBoot集成RabbitMQ方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

