我有一个用@Conditional(MyCondition.class)
注释的简单类
例如。:
@Conditional(MyCondition.class)
public class MyBean {
...
}
然后我有一个配置bean,它扩展了这个bean:
@Configuration
public class MyConfig extends MyBean {
...
}
似乎
@Conditional
被忽略,并且无论条件如何解决,总是会处理@Configuration
(甚至没有调用它)一旦将
@Conditional
批注移到MyConfig
,一切就会按预期进行。从文档中:
@Conditional批注可以通过以下任何一种方式使用:
作为直接或间接在任何类上的类型级注释
用@Component注释,包括@Configuration类
作为元注释,以构成自定义构造型
注解
作为任何@Bean方法上的方法级注释
我认为第一点在这里适用,即
MyConfig
间接用@Configuration
注释。还是间接引用了其他用@Conditional
注释的注释?感谢您的见解
最佳答案
根据@Conditional
的javadoc
注意:@Conditional注释不会被继承;没有考虑来自超类或重写方法的任何条件。@Conditional
注释不是@Inherited
,因此在子类上不可见。