我有一个用@Conditional(MyCondition.class)
e.g:
@Conditional(MyCondition.class)
public class MyBean {
...
}
然后我有一个扩展这个bean的配置bean:
@Configuration
public class MyConfig extends MyBean {
...
}
似乎@Conditional
被忽略,@Configuration
总是被处理,无论条件如何解决(甚至没有被调用)
只要我将@Conditional
注释移动到MyConfig
,一切都按预期工作。
来自doc:
@Conditional批注可以通过以下任何方式使用:
- 直接或间接作为任何类的类型级注释 用@Component注释,包括@Configuration classes
- 作为元注释,用于组成自定义构造型 注释
- 作为任何@Bean方法的方法级注释
我认为第一点适用于此,即MyConfig
间接注释@Configuration
。或者间接是否引用了使用@Conditional
注释的其他注释?
感谢您的见解
答案 0 :(得分:4)
根据@Conditional
注意:@Conditional注释不是继承的;来自超类或被重写方法的任何条件都没有被考虑。
@Conditional
注释不是@Inherited
因此在子类上不可见。