org.springframework.beans.factory.annotation

Class QualifierAnnotationAutowireCandidateResolver

    • Constructor Detail

      • QualifierAnnotationAutowireCandidateResolver

        public QualifierAnnotationAutowireCandidateResolver()
        Create a new QualifierAnnotationAutowireCandidateResolver for Spring's standard Qualifier annotation.

        Also supports JSR-330's Qualifier annotation, if available.

      • QualifierAnnotationAutowireCandidateResolver

        public QualifierAnnotationAutowireCandidateResolver(java.lang.Class<? extends java.lang.annotation.Annotation> qualifierType)
        Create a new QualifierAnnotationAutowireCandidateResolver for the given qualifier annotation type.
        Parameters:
        qualifierType - the qualifier annotation to look for
      • QualifierAnnotationAutowireCandidateResolver

        public QualifierAnnotationAutowireCandidateResolver(java.util.Set<java.lang.Class<? extends java.lang.annotation.Annotation>> qualifierTypes)
        Create a new QualifierAnnotationAutowireCandidateResolver for the given qualifier annotation types.
        Parameters:
        qualifierTypes - the qualifier annotations to look for
    • Method Detail

      • addQualifierType

        public void addQualifierType(java.lang.Class<? extends java.lang.annotation.Annotation> qualifierType)
        Register the given type to be used as a qualifier when autowiring.

        This identifies qualifier annotations for direct use (on fields, method parameters and constructor parameters) as well as meta annotations that in turn identify actual qualifier annotations.

        This implementation only supports annotations as qualifier types. The default is Spring's Qualifier annotation which serves as a qualifier for direct use and also as a meta annotation.

        Parameters:
        qualifierType - the annotation type to register
      • setValueAnnotationType

        public void setValueAnnotationType(java.lang.Class<? extends java.lang.annotation.Annotation> valueAnnotationType)
        Set the 'value' annotation type, to be used on fields, method parameters and constructor parameters.

        The default value annotation type is the Spring-provided Value annotation.

        This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate a default value expression for a specific argument.

      • isAutowireCandidate

        public boolean isAutowireCandidate(BeanDefinitionHolder bdHolder,
                                           DependencyDescriptor descriptor)
        Determine whether the provided bean definition is an autowire candidate.

        To be considered a candidate the bean's autowire-candidate attribute must not have been set to 'false'. Also, if an annotation on the field or parameter to be autowired is recognized by this bean factory as a qualifier, the bean must 'match' against the annotation as well as any attributes it may contain. The bean definition must contain the same qualifier or match by meta attributes. A "value" attribute will fallback to match against the bean name or an alias if a qualifier or attribute does not match.

        Specified by:
        isAutowireCandidate in interface AutowireCandidateResolver
        Overrides:
        isAutowireCandidate in class GenericTypeAwareAutowireCandidateResolver
        Parameters:
        bdHolder - the bean definition including bean name and aliases
        descriptor - the descriptor for the target method parameter or field
        Returns:
        whether the bean definition qualifies as autowire candidate
        See Also:
        Qualifier
      • checkQualifiers

        protected boolean checkQualifiers(BeanDefinitionHolder bdHolder,
                                          java.lang.annotation.Annotation[] annotationsToSearch)
        Match the given qualifier annotations against the candidate bean definition.
      • isQualifier

        protected boolean isQualifier(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Checks whether the given annotation type is a recognized qualifier type.
      • checkQualifier

        protected boolean checkQualifier(BeanDefinitionHolder bdHolder,
                                         java.lang.annotation.Annotation annotation,
                                         TypeConverter typeConverter)
        Match the given qualifier annotation against the candidate bean definition.
      • getQualifiedElementAnnotation

        @Nullable
        protected java.lang.annotation.Annotation getQualifiedElementAnnotation(RootBeanDefinition bd,
                                                                                          java.lang.Class<? extends java.lang.annotation.Annotation> type)
      • getFactoryMethodAnnotation

        @Nullable
        protected java.lang.annotation.Annotation getFactoryMethodAnnotation(RootBeanDefinition bd,
                                                                                       java.lang.Class<? extends java.lang.annotation.Annotation> type)
      • hasQualifier

        public boolean hasQualifier(DependencyDescriptor descriptor)
        Determine whether the given dependency declares a qualifier annotation.
        Parameters:
        descriptor - the descriptor for the target method parameter or field
        Returns:
        whether the descriptor declares a qualifier, narrowing the candidate status beyond the type match
        See Also:
        isQualifier(Class), Qualifier
      • findValue

        @Nullable
        protected java.lang.Object findValue(java.lang.annotation.Annotation[] annotationsToSearch)
        Determine a suggested value from any of the given candidate annotations.
      • extractValue

        protected java.lang.Object extractValue(AnnotationAttributes attr)
        Extract the value attribute from the given annotation.
        Since:
        4.3