ConditionalOnBean Type — spring-boot Architecture
Architecture documentation for the ConditionalOnBean type/interface in ConditionalOnBean.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnBean.java lines 65–148
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnBeanCondition.class)
public @interface ConditionalOnBean {
/**
* The class types of beans that should be checked. The condition matches when beans
* of all classes specified are contained in the {@link BeanFactory}. Beans that are
* not autowire candidates or that are not default candidates are ignored.
* <p>
* Since this annotation is parsed by loading class bytecode, it is safe to specify
* classes here that may ultimately not be on the classpath, but only if this
* annotation is directly on the affected component and <b>not</b> if this annotation
* is used as a composed, meta-annotation. In order to use this annotation as a
* meta-annotation, only use the {@link #type} attribute.
* @return the class types of beans to check
* @see Bean#autowireCandidate()
* @see BeanDefinition#isAutowireCandidate
* @see Bean#defaultCandidate()
* @see AbstractBeanDefinition#isDefaultCandidate
*/
Class<?>[] value() default {};
/**
* The class type names of beans that should be checked. The condition matches when
* beans of all classes specified are contained in the {@link BeanFactory}. Beans that
* are not autowire candidates or that are not default candidates are ignored.
* @return the class type names of beans to check
* @see Bean#autowireCandidate()
* @see BeanDefinition#isAutowireCandidate
* @see Bean#defaultCandidate()
* @see AbstractBeanDefinition#isDefaultCandidate
*/
String[] type() default {};
/**
* The annotation type decorating a bean that should be checked. The condition matches
* when all the annotations specified are defined on beans in the {@link BeanFactory}.
* Beans that are not autowire candidates or that are not default candidates are
* ignored.
* <p>
* Since this annotation is parsed by loading class bytecode, it is safe to specify
* classes here that may ultimately not be on the classpath, but only if this
* annotation is directly on the affected component and <b>not</b> if this annotation
* is used as a composed, meta-annotation.
* @return the class-level annotation types to check
* @see Bean#autowireCandidate()
* @see BeanDefinition#isAutowireCandidate
* @see Bean#defaultCandidate()
* @see AbstractBeanDefinition#isDefaultCandidate
*/
Class<? extends Annotation>[] annotation() default {};
/**
* The names of beans to check. The condition matches when all the bean names
* specified are contained in the {@link BeanFactory}.
* @return the names of beans to check
*/
String[] name() default {};
/**
* Strategy to decide if the application context hierarchy (parent contexts) should be
* considered.
* @return the search strategy
*/
SearchStrategy search() default SearchStrategy.ALL;
/**
* Additional classes that may contain the specified bean types within their generic
* parameters. For example, an annotation declaring {@code value=Name.class} and
* {@code parameterizedContainer=NameRegistration.class} would detect both
* {@code Name} and {@code NameRegistration<Name>}.
* <p>
* Since this annotation is parsed by loading class bytecode, it is safe to specify
* classes here that may ultimately not be on the classpath, but only if this
* annotation is directly on the affected component and <b>not</b> if this annotation
* is used as a composed, meta-annotation.
* @return the container types
* @since 2.1.0
*/
Class<?>[] parameterizedContainer() default {};
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free