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

网友投稿 514 2022-11-25


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

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

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

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

@Conditional(RabbitMqCondition.class)

pubhttp://lic 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=“区别开来”)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot整合POI导出通用Excel的方法示例
下一篇:PropertiesLoaderUtils 出现中文乱码的解决方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~