Springboot实现根据条件切换注入不同实现类的示例代码
最近有个一需求需要根据外界环境的属性(操作系统||yml属性||其他bean的状态)来实现启动时注入两套不同的实现类,实现切换.
实现启动时条件注入分2步:
第一步使用@Conditional(参数为Truefalse条件实现类需要你自己实现)注解
@Conditional(RabbitMqCondition.class) publicclassRabbitmqSMSMsgServiceImplextendsRabbitmqBasicMsgService{ //@Autowired(required=false) //DefaultMQProducerproducer; @Override publicvoidsendToYourTaskQueue_Step2(PnsMessagepnsMessage){ //TODOrabbitmq实现SMS消息推送 } }
第二步实现自定义的条件类接口Condition实现matches方法:
我这里判断的是spring配置文件里的属性,其实可以判断非常广泛的东西,并不只限于属性.
publicclassRabbitMqConditionimplementsCondition{ @Override publicbooleanmatches(ConditionContextconditionContext,AnnotatedTypeMetadataannotatedTypeMetadata){ return"rabbitmq".equals(conditionContext.getEnvironment().getProperty("mq.type")); } }
application.yml可以切换属性
mq: type:rabbitmq
如果要是有多个符合条件的bean利用@Service(value=“区别开来”)
到此这篇关于Springboot实现根据条件切换注入不同实现类的示例代码的文章就介绍到这了,更多相关Springboot根据条件切换注入不同实现类内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。