zoukankan      html  css  js  c++  java
  • Spring源码窥探之:Condition

    采用注解的方式来注入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容器初始化完成。。。。。
  • 相关阅读:
    PE文件简介
    hook键盘驱动中的分发函数实现键盘输入数据的拦截
    遍历系统中加载的驱动程序以及通过设备对象指针获取设备对象名称
    如何利用git shell提交代码到github
    驱动开发中的常用操作
    3.1_栈_顺序存储结构(数组形式)
    2.6_链表深入
    2.5_线性表的链式存储结构_双向链表
    2.4_线性表的链式存储结构_单链表具体实现
    2.3_线性表的链式存储结构_单链表
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/9816014.html
Copyright © 2011-2022 走看看