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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP動態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗分享2. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法3. ASP中if語句、select 、while循環(huán)的使用方法4. xml中的空格之完全解說5. WMLScript的語法基礎(chǔ)6. 匹配模式 - XSL教程 - 47. XML入門的常見問題(四)8. ASP中解決“對象關(guān)閉時,不允許操作。”的詭異問題……9. html小技巧之td,div標簽里內(nèi)容不換行10. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯誤頁的問題
