Springboot如何根据特定条件动态注入不同的Spring Bean实现?

2026-05-21 09:471阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计391个文字,预计阅读时间需要2分钟。

Springboot如何根据特定条件动态注入不同的Spring Bean实现?

最近有一个需求,需要根据外部环境(操作系统 | yml属性 | 其他bean的状态)的特性来实现启动时注入两套不同的实现类,并实现切换。启动时条件注入分两步进行:第一步,使用@Conditional(参数为条件1);第二步,使用@Conditional(参数为条件2)。

最近有个一需求需要根据外界环境的属性(操作系统 || 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配置文件里的属性, 其实可以判断非常广泛的东西, 并不只限于属性.

Springboot如何根据特定条件动态注入不同的Spring Bean实现?

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 根据条件切换注入不同实现类内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计391个文字,预计阅读时间需要2分钟。

Springboot如何根据特定条件动态注入不同的Spring Bean实现?

最近有一个需求,需要根据外部环境(操作系统 | yml属性 | 其他bean的状态)的特性来实现启动时注入两套不同的实现类,并实现切换。启动时条件注入分两步进行:第一步,使用@Conditional(参数为条件1);第二步,使用@Conditional(参数为条件2)。

最近有个一需求需要根据外界环境的属性(操作系统 || 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配置文件里的属性, 其实可以判断非常广泛的东西, 并不只限于属性.

Springboot如何根据特定条件动态注入不同的Spring Bean实现?

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 根据条件切换注入不同实现类内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!