Skip to content

Commit 6e418fe

Browse files
jhoellerunknown
authored andcommitted
QualifierAnnotationAutowireCandidateResolver matches regular bean name for FactoryBean dependency type as well
1 parent ec24299 commit 6e418fe

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.beans.factory.config;
1818

1919
import org.springframework.beans.BeanMetadataElement;
20+
import org.springframework.beans.factory.BeanFactoryUtils;
2021
import org.springframework.util.Assert;
2122
import org.springframework.util.ObjectUtils;
2223
import org.springframework.util.StringUtils;
@@ -118,8 +119,9 @@ public Object getSource() {
118119
* or the aliases stored in this bean definition.
119120
*/
120121
public boolean matchesName(String candidateName) {
121-
return (candidateName != null &&
122-
(candidateName.equals(this.beanName) || ObjectUtils.containsElement(this.aliases, candidateName)));
122+
return (candidateName != null && (candidateName.equals(this.beanName) ||
123+
candidateName.equals(BeanFactoryUtils.transformedBeanName(this.beanName)) ||
124+
ObjectUtils.containsElement(this.aliases, candidateName)));
123125
}
124126

125127

spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.springframework.beans.factory.FactoryBean;
2323
import org.springframework.beans.factory.annotation.Autowired;
2424
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
25+
import org.springframework.beans.factory.annotation.Qualifier;
2526
import org.springframework.beans.factory.annotation.QualifierAnnotationAutowireCandidateResolver;
2627
import org.springframework.beans.factory.support.ChildBeanDefinition;
2728
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
@@ -193,6 +194,8 @@ public void testGenericsBasedInjectionWithFactoryBean() {
193194

194195
RepositoryFactoryBeanInjectionBean bean = (RepositoryFactoryBeanInjectionBean) beanFactory.getBean("annotatedBean");
195196
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.repositoryFactoryBean);
197+
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.qualifiedRepositoryFactoryBean);
198+
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.prefixQualifiedRepositoryFactoryBean);
196199
}
197200

198201
@Test
@@ -323,6 +326,14 @@ public static class RepositoryFactoryBeanInjectionBean {
323326

324327
@Autowired
325328
public RepositoryFactoryBean<?> repositoryFactoryBean;
329+
330+
@Autowired
331+
@Qualifier("repoFactoryBean")
332+
public RepositoryFactoryBean<?> qualifiedRepositoryFactoryBean;
333+
334+
@Autowired
335+
@Qualifier("&repoFactoryBean")
336+
public RepositoryFactoryBean<?> prefixQualifiedRepositoryFactoryBean;
326337
}
327338

328339

0 commit comments

Comments
 (0)