@ -154,26 +154,35 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
@@ -154,26 +154,35 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
* /
@Override
public boolean isAutowireCandidate ( BeanDefinitionHolder bdHolder , DependencyDescriptor descriptor ) {
boolean match = super . isAutowireCandidate ( bdHolder , descriptor ) ;
if ( match ) {
match = checkQualifiers ( bdHolder , descriptor . getAnnotations ( ) ) ;
if ( match ) {
MethodParameter methodParam = descriptor . getMethodParameter ( ) ;
if ( methodParam ! = null ) {
Method method = methodParam . getMethod ( ) ;
if ( method = = null | | void . class = = method . getReturnType ( ) ) {
match = checkQualifiers ( bdHolder , methodParam . getMethodAnnotations ( ) ) ;
if ( ! super . isAutowireCandidate ( bdHolder , descriptor ) ) {
return false ;
}
Boolean checked = checkQualifiers ( bdHolder , descriptor . getAnnotations ( ) ) ;
if ( checked ! = Boolean . FALSE ) {
MethodParameter methodParam = descriptor . getMethodParameter ( ) ;
if ( methodParam ! = null ) {
Method method = methodParam . getMethod ( ) ;
if ( method = = null | | void . class = = method . getReturnType ( ) ) {
Boolean methodChecked = checkQualifiers ( bdHolder , methodParam . getMethodAnnotations ( ) ) ;
if ( methodChecked ! = null & & checked = = null ) {
checked = methodChecked ;
}
}
}
}
return match ;
return ( checked = = Boolean . TRUE | |
( checked = = null & & ( ( RootBeanDefinition ) bdHolder . getBeanDefinition ( ) ) . isDefaultCandidate ( ) ) ) ;
}
/ * *
* Match the given qualifier annotations against the candidate bean definition .
* @return { @code false } if a qualifier has been found but not matched ,
* { @code true } if a qualifier has been found and matched ,
* { @code null } if no qualifier has been found at all
* /
protected boolean checkQualifiers ( BeanDefinitionHolder bdHolder , Annotation [ ] annotationsToSearch ) {
@Nullable
protected Boolean checkQualifiers ( BeanDefinitionHolder bdHolder , Annotation [ ] annotationsToSearch ) {
boolean qualifierFound = false ;
if ( ! ObjectUtils . isEmpty ( annotationsToSearch ) ) {
SimpleTypeConverter typeConverter = new SimpleTypeConverter ( ) ;
@ -217,7 +226,7 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
@@ -217,7 +226,7 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
}
}
}
return ( qualifierFound | | ( ( RootBeanDefinition ) bdHolder . getBeanDefinition ( ) ) . isDefaultCandidate ( ) ) ;
return ( qualifierFound ? true : null ) ;
}
/ * *