ConditionalOnSingleCandidate Type — spring-boot Architecture
Architecture documentation for the ConditionalOnSingleCandidate type/interface in ConditionalOnSingleCandidate.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnSingleCandidate.java lines 48–100
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnBeanCondition.class)
public @interface ConditionalOnSingleCandidate {
/**
* The class type of bean that should be checked. The condition matches if a bean of
* the class specified is contained in the {@link BeanFactory} and a primary candidate
* exists in case of multiple instances. Beans that are not autowire candidates, that
* are not default candidates, or that are fallback 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.
* <p>
* This attribute may <strong>not</strong> be used in conjunction with
* {@link #type()}, but it may be used instead of {@link #type()}.
* @return the class type of the bean to check
* @see Bean#autowireCandidate()
* @see BeanDefinition#isAutowireCandidate
* @see Bean#defaultCandidate()
* @see AbstractBeanDefinition#isDefaultCandidate
*/
Class<?> value() default Object.class;
/**
* The class type name of bean that should be checked. The condition matches if a bean
* of the class specified is contained in the {@link BeanFactory} and a primary
* candidate exists in case of multiple instances. Beans that are not autowire
* candidates, that are not default candidates, or that are fallback candidates are
* ignored.
* <p>
* This attribute may <strong>not</strong> be used in conjunction with
* {@link #value()}, but it may be used instead of {@link #value()}.
* @return the class type name of the bean to check
* @see Bean#autowireCandidate()
* @see BeanDefinition#isAutowireCandidate
* @see Bean#defaultCandidate()
* @see AbstractBeanDefinition#isDefaultCandidate
*/
String type() default "";
/**
* Strategy to decide if the application context hierarchy (parent contexts) should be
* considered.
* @return the search strategy
*/
SearchStrategy search() default SearchStrategy.ALL;
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free