Spring@ConditionalOnProperty注释未按预期工作



我在属性文件中定义了一个属性: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);
  }
}

如果我在@ConditionalOnProperty中添加matchIfMissing = true,只是为了进行实验,看看property的值是多少,那么bean确实被创建了,我看到property的值是true

如果我删除matchIfMissing = true,将条件保留为@ConditionalOnProperty(name="${property}", havingValue="true"),并将属性property=truetrue更改为false,则永远不会创建bean(无论是对于true还是对于false(。

如果bean是根据属性有条件创建的,我该怎么办?

请在您的类上添加@Configuration

组件扫描不包括您的类,为此需要在类的顶部添加@Component或任何其他继承的注释。那么你的@Bean应该是从春天开始创建的。

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新