• Spring条件注解@Conditional


      Spring4中提供了一种更通用的条件创建Bean的方式,即使用@Conditional注解。

      示例:

      通过在配置文件中修改ifCreate的值,来控制某个Bean的创建。

      (1)创建一个实现了Condition接口的类,实现matches方法,在matches方法返回的结果决定了Bean是否被创建。

      

    
    
    package learnspring.learnspring.conditional;

    import org.springframework.context.annotation.Condition;
    import org.springframework.context.annotation.ConditionContext;
    import org.springframework.core.type.AnnotatedTypeMetadata;

    /**
    * @author 肖政宇
    * @date 2019-09-26 14:33
    * 说明:判断条件
    */
    public class MyCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
    String ifCreate = conditionContext.getEnvironment().getProperty("ifCreate");
    if ("true".equals(ifCreate)){
    System.out.println("配置文件中,ifCreate的值为true");
    return true;
    }else {
    System.out.println("配置文件中,ifCreate的值为false");
    return false;
    }
    }
    }
     

    (2)Bean

    
    
    package learnspring.learnspring.conditional;

    /**
    * @author 肖政宇
    * @date 2019-09-26 14:45
    * 说明:
    */
    public class DemoBean {
    public DemoBean() {
    System.out.println("Hello,DemoBean已经被创建!");
    }
    }
     

    (3)java配置类

    
    
    package learnspring.learnspring.conditional;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Conditional;
    import org.springframework.context.annotation.Configuration;

    /**
    * @author 肖政宇
    * @date 2019-09-26 14:46
    * 说明:
    */
    @Configuration
    public class MyConditionalConfiguration {

    @Bean
    @Conditional(MyCondition.class)
    public DemoBean createBeanConditional() {
    return new DemoBean();
    }
    }
     

    (4)配置文件

    (5)运行结果

  • 相关阅读:
    [实变函数]4.4 依测度收敛
    [实变函数]4.3 可测函数的构造
    [实变函数]4.2 Egrov 定理
    [实变函数]4.1 可测函数 (measurable function) 及其性质
    [实变函数]4.0 引言
    [实变函数]3.3 可测集类
    垂直滚动选择效果的实现
    unity模型任意无限切割插件
    微信小程序—智能小蜜(基于智能语义解析olami开放平台)
    AdPlayBanner:功能丰富、一键式使用的图片轮播插件
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11591929.html
Copyright © 2020-2023  润新知