@Conditional没有继承类?

时间:2014-10-02 10:08:41

标签: java spring annotations

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

感谢您的见解

1 个答案:

答案 0 :(得分:4)

根据@Conditional

javadoc
  

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

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