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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

李昊轩的博客   2021-02-03 我要评论
想了解Springboot实现根据条件切换注入不同实现类的代码实例的相关内容吗,李昊轩的博客在本文为您仔细讲解Springboot 根据条件切换注入不同实现类的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Springboot,条件切换注入,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=“区别开来”)

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们