springboot~ConditionalOnProperty注解的使用()

  本篇文章为你整理了springboot~ConditionalOnProperty注解的使用()的详细内容,包含有 springboot~ConditionalOnProperty注解的使用,希望能帮助你了解 springboot~ConditionalOnProperty注解的使用。

  @ConditionalOnProperty注释在类或者bean方法上进行控制这个bean对象是否被注册,它是否被注册,完成依赖于ConditionalOnProperty里的value的值,为true时,表示被注册,为false表示不注册这个bean。而我们通过matchIfMissing来配置这个value的缺省值,默认是false,即当你不配置时,它是不会自动装配的。

  在组件中的使用

  一 声明一个配置类

  

@ConfigurationProperties("kc-kafka")

 

  @Data

  public class KafkaProperties {

   * 是否开启kafka功能.

   private Boolean enabled = true;

   * kafka生产者ack机制

   private String acks = "1";

  

 

  通过EnableConfigurationProperties开启配置类,而当前类是否被注册,依赖于kc-kafka.enabled的值,默认是装配这个bean

  matchIfMissing=true表示默认在不配置kc-kafak时,它就会装配这个KafkaProviderConfig对象

  

@Configuration

 

  @RequiredArgsConstructor

  @ConditionalOnProperty(value = "kc-kafka.enabled", matchIfMissing = true)

  @EnableConfigurationProperties(KafkaProperties.class)

  public class KafkaProviderConfig {

   @Autowired

   KafkaProperties kafkaProperties;

   @Bean

   @ConditionalOnBean(DefaultKafkaProducerFactory.class)

   public KafkaTemplate String, String kafkaTemplate(DefaultKafkaProducerFactory String, String kafkaProducerFactory) {

   return new KafkaTemplate (kafkaProducerFactory, false);

  

 

  通过name和havingValue为控制bean的装配

  上面的matchIfMissing只控制boolean类型的属性,如果你希望通过字符串属性来控制bean的装配,可以使用name和havingValue的组合。

  

@Configuration

 

  @RequiredArgsConstructor

  @ConditionalOnProperty(name= "kc-kafka.status", havingValue="1")

  @EnableConfigurationProperties(KafkaProperties.class)

  

 

  @ConditionalOnProperty和@ConditionalOnMissingBean一起使用的效果

  MissingBean是一个接口,里面有个方法hello()

  有个默认的实现DefaultMissingBean,通过@ConditionalOnMissingBean进行声明,当没有其它MissingBean接口的bean时,会使用这个DefaultMissingBean

  V1MissingBean是我们自定义的实现,它通过@ConditionalOnProperty来开启是否装配,如果它没有装备,spring就使用默认的DefaultMissingBean

  test.v1.enabled在配置文件里,配置为true表示开启 V1MissingBean,配置为false,表示不开启它,而开启默认的DefaultMissingBean

  

public interface MissingBean {

 

   void hello();

  public class DefaultMissingBean implements MissingBean {

   @Override

   public void hello() {

   System.out.println("default MissingBean");

  @Configuration

  public class MissingBeanConfig {

   * @ConditionalOnMissingBean当没有其它MissingBean的bean时,就使用DefaultMissingBean这个bean. @return

   @Bean

   @ConditionalOnMissingBean(MissingBean.class)

   public MissingBean defaultMissingBean() {

   return new DefaultMissingBean();

  

 

  v1MissingBean对象

  

@Component

 

  @ConditionalOnProperty(value="test.v1.enabled",matchIfMissing = true)

  public class V1MissingBean implements MissingBean {

   @Override

   public void hello() {

   System.out.println("v1 MissingBean");

  

 

  关闭v1的配置

  

test:

 

   enabled: false

  

 

  

 @Autowired

 

   MissingBean missingBean;

  以上就是springboot~ConditionalOnProperty注解的使用()的详细内容,想要了解更多 springboot~ConditionalOnProperty注解的使用的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: