@Target(value={TYPE,METHOD}) @Retention(value=RUNTIME) @Documented public @interface Conditional
A condition is any state that can be determined programmatically
 before the bean definition is due to be registered (see Condition for details).
 
The @Conditional annotation may be used in any of the following ways:
 
@Component, including @Configuration classes@Bean methodIf a @Configuration class is marked with @Conditional,
 all of the @Bean methods, @Import annotations, and
 @ComponentScan annotations associated with that
 class will be subject to the conditions.
 
NOTE: Inheritance of @Conditional annotations
 is not supported; any conditions from superclasses or from overridden
 methods will not be considered. In order to enforce these semantics,
 @Conditional itself is not declared as
 @Inherited; furthermore, any
 custom composed annotation that is meta-annotated with
 @Conditional must not be declared as @Inherited.
Condition| Modifier and Type | Required Element and Description | 
|---|---|
| Class<? extends Condition>[] | valueAll  Conditionsthat must match
 in order for the component to be registered. | 
public abstract Class<? extends Condition>[] value
Conditions that must match
 in order for the component to be registered.