春季@ConditionalOnProperty批注无法按预期运行

时间:2018-11-14 10:00:14

标签: java spring spring-boot security annotations

我在属性文件中定义了一个属性:property=true

然后我有SomeClass.java类,如果属性property设置为true,则应创建一个属性配置bean。 >

这是我的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的值,那么就创建了豆 并且我看到property的值为true

如果我删除了matchIfMissing = true,则将条件保留为@ConditionalOnProperty(name="${property}", havingValue="true")并将属性property=truetrue更改为false truefalse)。

我该怎么办会根据属性有条件地创建bean?

1 个答案:

答案 0 :(得分:2)

请在课程上方添加@Configuration

组件扫描不包括您的类,因此需要在类顶部添加一个@Component或任何其他继承的注释。然后,您的@Bean应该从spring创建。

希望这会有所帮助。