zoukankan      html  css  js  c++  java
  • 【Java Web开发学习】Spring4条件化的bean

    【Java Web开发学习】Spring4条件化的bean

    转载:https://www.cnblogs.com/yangchongxing/p/9071960.html

    Spring4引入了@Conditional注解,可以用到带有@Bean注解的地方,若给定的条件计算为true则创建bean,否则bean被忽略

    用法:@Conditional(PlayerCondition.class),设置为@Conditional注解的类必须是任意实现了org.springframework.context.annotation.Condition接口的类。该接口只有一个方法

    public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {},返回boolean

    package cn.ycx.web.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Conditional;
    import org.springframework.context.annotation.Configuration;
    
    import cn.ycx.web.model.Painter;
    import cn.ycx.web.model.PainterCondition;
    import cn.ycx.web.model.Player;
    import cn.ycx.web.model.PlayerCondition;
    @Configuration
    public class TestConfig {
        @Bean
        @Conditional(PlayerCondition.class)
        public Player player() {
            return new Player();
        }
        @Bean
        @Conditional(PainterCondition.class)
        public Painter painter() {
            return new Painter();
        }
    }
    package cn.ycx.web.model;
    
    import org.springframework.context.annotation.Condition;
    import org.springframework.context.annotation.ConditionContext;
    import org.springframework.core.env.Environment;
    import org.springframework.core.type.AnnotatedTypeMetadata;
    
    public class PlayerCondition implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {
            Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PALY");
        }
    }
    package cn.ycx.web.model;
    
    import org.springframework.context.annotation.Condition;
    import org.springframework.context.annotation.ConditionContext;
    import org.springframework.core.env.Environment;
    import org.springframework.core.type.AnnotatedTypeMetadata;
    
    public class PainterCondition implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {
            Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PAINT");
        }
    }

    环境变量包含CONDITION_PALY就创建PlayerCondition

    环境变量设置:

    windows系统

    spring.CONDITION_PALY=play

    ubuntu系统

    当前用户

    $ vim ~/.bashrc
    追加 export CONDITION_PALY=play
    $ source ~/.bashrc

    所有用户

    # vim /etc/profile
    追加 export CONDITION_PALY=play
    # source /etc/profile
  • 相关阅读:
    dp的小理解
    POJ
    isolate-user-vlan隔离用户vlan的配置
    【mvrp多协议vlan注册协议给予三种注册方式的验证】
    【Commare中关于理论范畴和技术常用的技术术语】
    BGP映射和联盟
    filter-policy和AS-PATH-FILTER过滤BGP路由条目
    【路由过滤工具小结】
    【ISIS(中间系统到中间系统)路由链路状态信息协议初识】
    【poe设备加电配置】
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/9071960.html
Copyright © 2011-2022 走看看