Spring4的@Conditional注解

@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 {
  ... ...
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容