美文网首页
Spring4的@Conditional注解

Spring4的@Conditional注解

作者: 柚子过来 | 来源:发表于2018-02-07 12:39 被阅读0次

    @Conditional注解可以用于按条件创建Bean(目前遇到有该功能,有时间再看看有没有其他配置功能)
    我们可以自定义自己的Condition:

    public class KafkaCondition implements Condition {
    
    //重写matches方法,该方法返回true表示启用该配置
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        Environment env = conditionContext.getEnvironment();
    
        return env != null
            &&env.getProperty(MyConstants.MY_IMPL).equals(MyConstants.KAFKA_IMPL);
    }
    }
    

    MyConstants类:

    final class ConditionConstants {
    static final String MY_IMPL = "service.impl";
    static final String DB_IMPL = "database";
    static final String KAFKA_IMPL = "kafka";
    }
    

    这样我们就可以在application.yml里控制条件了,当然你也可以在matches方法里按自己的想法定义条件。

    application.yml里加入:
    service:
        impl: kafka
    

    经过以上操作,如果我们定义了一个类,就可以控制Spring容器初始化的时候会不会生成该Bean了

    @Component
    @Conditional(KafkaCondition.class)  //只有在service.impl的值是kafka的时候,Spring才会创建该Bean。
    public class NgScheduledService {
      ... ...
    }

    相关文章

      网友评论

          本文标题:Spring4的@Conditional注解

          本文链接:https://www.haomeiwen.com/subject/zevozxtx.html