Browse Source

QualifierAnnotationAutowireCandidateResolver matches regular bean name for FactoryBean dependency type as well

pull/398/merge
Juergen Hoeller 12 years ago committed by unknown
parent
commit
6e418fe43d
  1. 6
      spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionHolder.java
  2. 11
      spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java

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

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.beans.factory.config;
import org.springframework.beans.BeanMetadataElement;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
@ -118,8 +119,9 @@ public class BeanDefinitionHolder implements BeanMetadataElement { @@ -118,8 +119,9 @@ public class BeanDefinitionHolder implements BeanMetadataElement {
* or the aliases stored in this bean definition.
*/
public boolean matchesName(String candidateName) {
return (candidateName != null &&
(candidateName.equals(this.beanName) || ObjectUtils.containsElement(this.aliases, candidateName)));
return (candidateName != null && (candidateName.equals(this.beanName) ||
candidateName.equals(BeanFactoryUtils.transformedBeanName(this.beanName)) ||
ObjectUtils.containsElement(this.aliases, candidateName)));
}

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

@ -22,6 +22,7 @@ import org.junit.Test; @@ -22,6 +22,7 @@ import org.junit.Test;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.QualifierAnnotationAutowireCandidateResolver;
import org.springframework.beans.factory.support.ChildBeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
@ -193,6 +194,8 @@ public class ConfigurationClassPostProcessorTests { @@ -193,6 +194,8 @@ public class ConfigurationClassPostProcessorTests {
RepositoryFactoryBeanInjectionBean bean = (RepositoryFactoryBeanInjectionBean) beanFactory.getBean("annotatedBean");
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.repositoryFactoryBean);
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.qualifiedRepositoryFactoryBean);
assertSame(beanFactory.getBean("&repoFactoryBean"), bean.prefixQualifiedRepositoryFactoryBean);
}
@Test
@ -323,6 +326,14 @@ public class ConfigurationClassPostProcessorTests { @@ -323,6 +326,14 @@ public class ConfigurationClassPostProcessorTests {
@Autowired
public RepositoryFactoryBean<?> repositoryFactoryBean;
@Autowired
@Qualifier("repoFactoryBean")
public RepositoryFactoryBean<?> qualifiedRepositoryFactoryBean;
@Autowired
@Qualifier("&repoFactoryBean")
public RepositoryFactoryBean<?> prefixQualifiedRepositoryFactoryBean;
}

Loading…
Cancel
Save