春天@ConditionalOnProperty注释工作不正常(Spring @Conditiona

2019-10-29 18:46发布

我有一个属性文件中定义的属性: property=true

然后,我有SomeClass.java类, 创建只有在财产属性配置bean的property设置为true。

这是我SomeClass类:

public class SomeClass {

  //this is the proerty which I set to true or false
  @Value("${property}")
  private String property;

  //this is the bean which needs to be created conditionally based on the property but at the moment it does not get created
  @Bean
  @ConditionalOnProperty(name="${property}", havingValue="true")
  public PropertyConfiguration propertyConfig() {
    // doesnt print anything because the bean does not get created
    System.out.print(property);
  }
}

如果我添加matchIfMissing = true里面@ConditionalOnProperty ,只是做实验,看看有什么价值property ,那么这个bean 获得创建和我看到的价值propertytrue

如果我删除matchIfMissing = true ,假条件为@ConditionalOnProperty(name="${property}", havingValue="true")并更改属性property=truetruefalse豆,从未创建(既不是true也不是为false )。

我应该怎么办ST豆被有条件地创建,基于财产?

Answer 1:

请新增@Configuration类以上。

该组件扫描不包括你的类,这样做就需要添加@Component或任何其他继承注解你的类的顶部。 然后你@Bean应该从春天来创建。

希望这可以帮助。



文章来源: Spring @ConditionalOnProperty annotation not working as expected