我有一个用@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注释的注释?

感谢您的见解

最佳答案

根据@Conditionaljavadoc


  注意:@Conditional注释不会被继承;没有考虑来自超类或重写方法的任何条件。


@Conditional注释不是@Inherited,因此在子类上不可见。

10-05 23:17