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
  • 相关阅读:
    Android学习路径(两)项目文件本身使用场景和文件演示
    A左右ndroid正在使用Uri监视数据库中的更改
    离PACKET_INp获取信息acket data
    curl 命令
    POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
    Linux 下一个 Mysql error 2002 错误解决
    图片打水印 缩放 和一个输入流的转换
    qt Qt5开发
    qt 关于Qt中MVC的介绍与使用
    qt mvc3
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/9071960.html
Copyright © 2011-2022 走看看