zoukankan      html  css  js  c++  java
  • 四、【注解】Spring注解@Conditional

    采用注解的方式来注入bean

    1. 编写config类
    /**
     * @author zhangjianbing
     * time 2020/09/23
     * https://www.zhangjianbing.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);
        }
    
    }
    
    1. 编写condition类
    /**
     * @author zhangjianbing
     * time 2020/09/23
     * https://www.zhangjianbing.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注入容器之前进行判断,符合条件的才注入容器。

    1. 编写测试类
    /**
     * @author zhangjianbing
     * time 2020/09/23
     * https://www.zhangjianbing.com
     */
    public class Test01 {
    
        public static void main(String[] args) {
    
            // IOC容器创建(容器类似一个Map)
            AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ConditionConfig.class);
    
            System.out.println("IOC容器初始化完成。。。。。");
    
        }
    
    }
    
    1. 测试结果:
    =====================
    将zhang放入IOC中。。。。
    将bing放入IOC中。。。。
    IOC容器初始化完成。。。。。
    
  • 相关阅读:
    如何让position:fixed在IE6中工作 不抖动
    【javascript基础】之【宿主环境】
    用函数式编程技术编写优美的 JavaScript
    IE6下使用滤镜后链接不能点击的BUG
    什么是内存泄漏
    Best Practices for Speeding Up Your Web Site
    Object.prototype.toString.call()
    【前端优化】IE浏览器下同一网页多图片显示的瓶颈与优化
    get username
    open file and format readin
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/13716163.html
Copyright © 2011-2022 走看看