欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼

 更新時(shí)間:2020年08月23日 09:38:18   作者:李昊軒的博客  
這篇文章主要介紹了Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

最近有個(gè)一需求需要根據(jù)外界環(huán)境的屬性(操作系統(tǒng) || yml屬性 || 其他bean的狀態(tài)) 來(lái)實(shí)現(xiàn)啟動(dòng)時(shí)注入兩套不同的實(shí)現(xiàn)類, 實(shí)現(xiàn)切換.

實(shí)現(xiàn)啟動(dòng)時(shí)條件注入分2步:

第一步 使用@Conditional(參數(shù)為 True false條件實(shí)現(xiàn)類 需要你自己實(shí)現(xiàn))注解

@Conditional(RabbitMqCondition.class)
public class RabbitmqSMSMsgServiceImpl extends RabbitmqBasicMsgService {

//  @Autowired(required = false)
//  DefaultMQProducer producer;

  @Override
  public void sendToYourTaskQueue_Step2(PnsMessage pnsMessage) {
    // TODO rabbitmq 實(shí)現(xiàn)SMS消息推送
  }

}

第二步 實(shí)現(xiàn)自定義的條件類接口Condition 實(shí)現(xiàn)matches方法:

我這里判斷的是spring配置文件里的屬性, 其實(shí)可以判斷非常廣泛的東西, 并不只限于屬性.

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

如果要是有多個(gè)符合條件的bean 利用@Service(value=“區(qū)別開(kāi)來(lái)”)

到此這篇關(guān)于Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼的文章就介紹到這了,更多相關(guān)Springboot 根據(jù)條件切換注入不同實(shí)現(xiàn)類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論