A condition is any state that can be determined programmatically
before the bean definition is due to be registered (see
Condition for details).
@Conditional annotation may be used in any of the following ways:
@Configuration class is marked with
@Conditional, all of the
@Bean methods and
@Import annotations associated with that class
will be subject to the conditions.
@Conditional annotations are not inherited; any conditions from
superclasses or from overridden methods are not being considered.