【发布时间】:2017-04-24 22:43:55
【问题描述】:
我们已经构建了一个 Spring Boot 启动器,它在一个用 @ConfigurationProperties 注释的类中描述它的配置:
@ConfigurationProperties(name = "foo.bar")
public class FooConfiguration {
public String baz;
}
在启动器之外,我想根据属性是否不使用@ConditionalOnProperty 注释设置来执行一些操作:
@Bean
@ConditionalOnProperty(name = "foo.bar.baz", matchIfMissing=true)
public FooReplacement moo() {
return new FooReplacement();
}
但是,如果 foo.bar.baz 属性在使用 @ConditionProperties 注释的类中描述,则此条件永远不会匹配。如果没有在这样的类中描述,@ConditionalOnProperty 注解就可以了。
我们使用的是 Spring Boot 1.4
那么,Spring Boot 的工作方式是预期的还是我们发现了一个错误?
【问题讨论】:
-
你写
@ConditionProperties时是说@ConfigurationProperties -
我写了一个单元测试,我认为它可以练习你的场景,但我无法重现你的失败。我正在使用 1.4.1 版本的 SpringBoot,尝试升级作为潜在的解决方案。如果需要,我会发布单元测试。
-
@BobLukens 是的,欢迎进行单元测试。 :) 是的,在第二个代码 sn-p 下面的段落中,我的意思是 ConfigurationProperties 而不是 ConditionProperties。 ;)
标签: spring spring-boot