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

2025-05-29 0 101

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

实现启动时条件注入分2步:

第一步 使用@Conditional(参数为 True false条件实现类 需要你自己实现)注解

?

1

2

3

4

5

6

7

8

9

10

11

12
@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配置文件里的属性, 其实可以判断非常广泛的东西, 并不只限于属性.

?

1

2

3

4

5

6
public class RabbitMqCondition implements Condition {

@Override

public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {

return "rabbitmq".equals(conditionContext.getEnvironment().getProperty("mq.type"));

}

}

application.yml 可以切换属性

?

1

2
mq:

type: rabbitmq

如果要是有多个符合条件的bean 利用@Service(value=“区别开来”)

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

原文链接:https://blog.csdn.net/qq_33709508/article/details/108128932

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Springboot实现根据条件切换注入不同实现类的示例代码 https://www.kuaiidc.com/118352.html

相关文章

发表评论
暂无评论