一个简短的例子
xs_danger_btn_to
因此,如果创建了Foo2,我会期望创建Foo2HealthIndicator,但不是。 也许有人可以提示为什么不。
如果我将bean注册从接口返回类型更改为具体的类类型,它可以正常工作。
interface Foo{
String bar()
}
class Foo1 implements Foo
class Foo2 implements Foo
@Configuration
BarConfiguration
@ConditionalOnMissingBean
@ConditionalOnProperty( value = "my.enabled", havingValue = "false" )
Foo foo1(){
return Foo1();
}
@ConditionalOnMissingBean
Foo foo2(){
return Foo2();
}
@ConditonalOnBean(Foo2.class)
Foo2HealthIndicator foo2HealthIndicator(Foo2 foo2){
//todo something
}
有人可以向我解释为什么界面类型不起作用?或者给我一个相应的文档?
答案 0 :(得分:0)
ConditionalOnMissingBean
javadoc:
只有在BeanFactory中尚未包含指定的bean类和/或名称时才匹配的条件。
因此,在您的第一个示例中,foo2
bean未注册,因为已经注册了一个。
解决方案是删除ConditionalOnMissingBean
注释。