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
  • 相关阅读:
    redis集群报错,(error) MOVED 15495 127.0.0.1:7003
    在云服务器上时候,我关闭了防火墙还是不能连接!
    redis 集群安装 3主3从3台云主机
    ajax完成团队信息异步添加【实际项目】
    众创项目首页推荐需求
    添加删除表格(js完成)【自己实际项目】
    【JPA 级联保存/级联删除】@OneToMany (双向) 一对多【转】
    页面提交 string数组和list对象集合举例
    Form表单如何传递List数组对象到后台的解决办法(转)
    实现同时提交多个form(基础方法) 收集(转)
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/9071960.html
Copyright © 2011-2022 走看看