采用注解的方式来注入bean
1. 编写config类
/** * @author 70KG * @Title: ConditionConfig * @Description: * @date 2018/7/22下午3:50 * @From www.nmyswls.com */ @Configuration public class ConditionConfig { @Conditional(ConditionMatch1.class) @Bean public Goods m1() { System.out.println("将zhang放入IOC中。。。。"); return new Goods("zhang", 24); } @Conditional(ConditionMatch2.class) @Bean public Goods m2() { System.out.println("将jian放入IOC中。。。。"); return new Goods("jian", 25); } @Bean public Goods m3() { System.out.println("将bing放入IOC中。。。。"); return new Goods("bing", 26); } }
2. 编写condition类
/** * @author 70KG * @Title: ConditionMatch1 * @Description: * @date 2018/7/22下午3:53 * @From www.nmyswls.com */ public class ConditionMatch1 implements Condition { // conditionContext:判断条件可以使用的上下文环境 // annotatedTypeMetadata:注解的信息 @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { Environment environment = conditionContext.getEnvironment(); String property = environment.getProperty("os.name"); if (property.contains("Mac")) { System.out.println("====================="); return true; } return false; } }
可见它实现了condition接口,目的就是在bean注入容器之前进行判断,符合条件的才注入容器。
3.编写测试类
/** * @author 70KG * @Title: FutureTaskTest * @Description: * @date 2018/7/22下午3:49 * @From www.nmyswls.com */ public class Test01 { public static void main(String[] args) { // IOC容器创建(容器类似一个Map) AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ConditionConfig.class); System.out.println("IOC容器初始化完成。。。。。"); } }
4. 测试结果:
=====================
将zhang放入IOC中。。。。
将bing放入IOC中。。。。
IOC容器初始化完成。。。。。