spring @condition 注解
spring @condition注解是用来在不同条件下注入不同实现的
demo如下:
package com.foreveross.service.weixin.test.condition;import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.ConditionContext;import org.springframework.core.type.AnnotatedTypeMetadata;/** * * windows下的环境 * */public class WindowsCondition implements Condition{@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {retu context.getEnvironment().getProperty("os.name").contains("Windows");}}
package com.foreveross.service.weixin.test.condition;import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.ConditionContext;import org.springframework.core.type.AnnotatedTypeMetadata;public class LinuxCondition implements Condition{@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {retu context.getEnvironment().getProperty("os.name").contains("Linux");}}
package com.foreveross.service.weixin.test.condition;public interface ListService {String showListCmd();}
package com.foreveross.service.weixin.test.condition;import org.springframework.stereotype.Service;@Servicepublic class LinuxService implements ListService {public String showListCmd(){retu "ls";}}
package com.foreveross.service.weixin.test.condition;import org.springframework.stereotype.Service;@Servicepublic class WindowsService implements ListService{public String showListCmd(){retu "dir";}}
package com.foreveross.service.weixin.test.condition;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Conditional;import org.springframework.context.annotation.Configuration;@Configurationpublic class MyConfiguration {@Bean(name = "service")@Conditional(WindowsCondition.class)public ListService windowsService() {retu new WindowsService();}@Bean(name = "service")@Conditional(LinuxCondition.class)public ListService linuxEmailerService() {retu new LinuxService();}}
package com.foreveross.service.weixin.test.condition;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(MyConfiguration.class);ListService service= context.getBean(ListService.class);System.out.println("操作符为:"+service.showListCmd()+",系统为:"+context.getEnvironment().getProperty("os.name"));context.close();}}
作者:全力以赴001
来源链接:https://www.cnblogs.com/huzi007/p/6222289.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。