@Conditional 不适用于继承的类?

Jan*_*yka 2 java spring annotations

我有一个简单的类,注释为@Conditional(MyCondition.class)

例如:

@Conditional(MyCondition.class)
public class MyBean {
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个配置 bean 来扩展这个 bean:

@Configuration
public class MyConfig extends MyBean {
  ...
}
Run Code Online (Sandbox Code Playgroud)

似乎 被@Conditional忽略并且@Configuration总是被处理,无论条件如何解决(甚至没有被调用)

一旦我将@Conditional注释移至,MyConfig一切都会按预期进行。

来自文档:

@Conditional 注解可以通过以下任意方式使用:

  • 作为直接或间接使用 @Component 注释的任何类的类型级注释,包括 @Configuration 类
  • 作为元注释,用于编写自定义构造型注释
  • 作为任何 @Bean 方法上的方法级注释

我假设第一点适用于此,即MyConfig间接用 注释@Configuration。或者是否间接引用了用 注释的其他注释@Conditional

感谢您的见解

M. *_*num 5

根据javadoc@Conditional

注意:@Conditional 注解不是继承的;不考虑来自超类或重写方法的任何条件。

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