Springboot实现根据条件切换注入不同实现类的示例代码

 更新时间:2020年08月23日 09:38:18   作者:李昊轩的博客  
这篇文章主要介绍了Springboot实现根据条件切换注入不同实现类的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近有个一需求需要根据外界环境的属性(操作系统 || yml属性 || 其他bean的状态) 来实现启动时注入两套不同的实现类, 实现切换.

实现启动时条件注入分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=“区别开来”)

到此这篇关于Springboot实现根据条件切换注入不同实现类的示例代码的文章就介绍到这了,更多相关Springboot 根据条件切换注入不同实现类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决springboot整合cxf启动报错,原因是版本问题

    解决springboot整合cxf启动报错,原因是版本问题

    这篇文章主要介绍了解决springboot整合cxf启动报错,原因是版本问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java 数据结构与算法系列精讲之单向链表

    Java 数据结构与算法系列精讲之单向链表

    单向链表特点是链表的链接方向是单向的,访问要通过顺序读取从头部开始。链表是使用指针构造的列表,是由一个个结点组装起来的,又称为结点列表。其中每个结点都有指针成员变量指向列表中的下一个结点,head指针指向第一个结点称为表头,而终止于最后一个指向nuLL的指针
    2022-02-02
  • Java字符流和字节流对文件操作的区别

    Java字符流和字节流对文件操作的区别

    本篇文章主要介绍了Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,对初学者很有用,有需要的朋友可以了解一下。
    2016-10-10
  • 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)

    使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)

    在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求,具体内容详情大家参考下本文
    2018-01-01
  • Springboot 如何设置启动内存

    Springboot 如何设置启动内存

    这篇文章主要介绍了Springboot 如何设置启动内存,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • springboot2.5.2与 flowable6.6.0整合流程引擎应用分析

    springboot2.5.2与 flowable6.6.0整合流程引擎应用分析

    这篇文章主要介绍了springboot2.5.2与 flowable6.6.0整合流程引擎应用分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • java JOptionPane类的介绍

    java JOptionPane类的介绍

    java JOptionPane类的介绍,需要的朋友可以参考一下
    2013-04-04
  • SpringBoot整合RocketMQ批量发送消息的实现代码

    SpringBoot整合RocketMQ批量发送消息的实现代码

    这篇文章主要介绍了SpringBoot整合RocketMQ批量发送消息的实现,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • ajax实时监测与springboot的实例分析

    ajax实时监测与springboot的实例分析

    本文将介绍如何使用 AJAX 技术结合 Spring Boot 构建一个实时反馈用户输入的应用,我们将创建一个简单的输入框,当用户在输入框中键入文本时,应用将异步地向后端发送请求,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 关于elasticsearch的match_phrase_prefix查询详解

    关于elasticsearch的match_phrase_prefix查询详解

    这篇文章主要介绍了关于elasticsearch的match_phrase_prefix查询问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论