批注接口 ConditionalOnMissingBean


@Target({TYPE,METHOD}) @Retention(RUNTIME) @Documented @Conditional(org.springframework.boot.autoconfigure.condition.OnBeanCondition.class) public @interface ConditionalOnMissingBean
@Conditional that only matches when no beans meeting the specified requirements are already contained in the BeanFactory. None of the requirements must be met for the condition to match and the requirements do not have to be met by the same bean.

When placed on a @Bean method and none of value(), type(), name(), or annotation() has been specified, the bean type to match defaults to the return type of the @Bean method:

 @Configuration
 public class MyAutoConfiguration {

     @ConditionalOnMissingBean
     @Bean
     public MyService myService() {
         ...
     }

 }

In the sample above the condition will match if no bean of type MyService is already contained in the BeanFactory.

The condition can only match the bean definitions that have been processed by the application context so far and, as such, it is strongly recommended to use this condition on auto-configuration classes only. If a candidate bean may be created by another auto-configuration, make sure that the one using this condition runs after.

从以下版本开始:
1.0.0
作者:
Phillip Webb, Andy Wilkinson
  • 可选元素概要

    可选元素
    修饰符和类型
    可选元素
    说明
    Class<? extends Annotation>[]
    The annotation type decorating a bean that should be checked.
    Class<?>[]
    The class types of beans that should be ignored when identifying matching beans.
    The class type names of beans that should be ignored when identifying matching beans.
    The names of beans to check.
    Class<?>[]
    Additional classes that may contain the specified bean types within their generic parameters.
    Strategy to decide if the application context hierarchy (parent contexts) should be considered.
    The class type names of beans that should be checked.
    Class<?>[]
    The class types of beans that should be checked.
  • 元素详细资料

    • value

      Class<?>[] value
      The class types of beans that should be checked. The condition matches when no bean of each class specified is contained in the BeanFactory. Beans that are not autowire candidates or that are not default candidates are ignored.
      返回:
      the class types of beans to check
      另请参阅:
      默认值:
      {}
    • type

      String[] type
      The class type names of beans that should be checked. The condition matches when no bean of each class specified is contained in the BeanFactory. Beans that are not autowire candidates or that are not default candidates are ignored.
      返回:
      the class type names of beans to check
      另请参阅:
      默认值:
      {}
    • ignored

      Class<?>[] ignored
      The class types of beans that should be ignored when identifying matching beans.
      返回:
      the class types of beans to ignore
      从以下版本开始:
      1.2.5
      默认值:
      {}
    • ignoredType

      String[] ignoredType
      The class type names of beans that should be ignored when identifying matching beans.
      返回:
      the class type names of beans to ignore
      从以下版本开始:
      1.2.5
      默认值:
      {}
    • annotation

      Class<? extends Annotation>[] annotation
      The annotation type decorating a bean that should be checked. The condition matches when each annotation specified is missing from all beans in the BeanFactory. Beans that are not autowire candidates or that are not default candidates are ignored.
      返回:
      the class-level annotation types to check
      另请参阅:
      默认值:
      {}
    • name

      String[] name
      The names of beans to check. The condition matches when each bean name specified is missing in the BeanFactory.
      返回:
      the names of beans to check
      默认值:
      {}
    • search

      Strategy to decide if the application context hierarchy (parent contexts) should be considered.
      返回:
      the search strategy
      默认值:
      ALL
    • parameterizedContainer

      Class<?>[] parameterizedContainer
      Additional classes that may contain the specified bean types within their generic parameters. For example, an annotation declaring value=Name.class and parameterizedContainer=NameRegistration.class would detect both Name and NameRegistration<Name>.
      返回:
      the container types
      从以下版本开始:
      2.1.0
      默认值:
      {}