From a4a71a89040a0d8b790d13da68393c91d465bc54 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 11 Aug 2016 23:45:50 +0200 Subject: [PATCH] Polishing --- .../config/AutowireCapableBeanFactory.java | 20 +++++++++---------- .../support/DefaultListableBeanFactory.java | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/AutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/AutowireCapableBeanFactory.java index bde3d36e59..61b5240770 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/AutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/AutowireCapableBeanFactory.java @@ -318,8 +318,8 @@ public interface AutowireCapableBeanFactory extends BeanFactory { * @param requiredType type the bean must match; can be an interface or superclass. * {@code null} is disallowed. * @return the bean name plus bean instance - * @throws NoSuchBeanDefinitionException if no bean of the given type was found - * @throws NoUniqueBeanDefinitionException if more than one bean of the given type was found + * @throws NoSuchBeanDefinitionException if no matching bean was found + * @throws NoUniqueBeanDefinitionException if more than one matching bean was found * @throws BeansException if the bean could not be created * @since 4.3.3 * @see #getBean(Class) @@ -328,30 +328,30 @@ public interface AutowireCapableBeanFactory extends BeanFactory { /** * Resolve the specified dependency against the beans defined in this factory. - * @param descriptor the descriptor for the dependency - * @param requestingBeanName the name of the bean which declares the present dependency + * @param descriptor the descriptor for the dependency (field/method/constructor) + * @param requestingBeanName the name of the bean which declares the given dependency * @return the resolved object, or {@code null} if none found * @throws NoSuchBeanDefinitionException if no matching bean was found * @throws NoUniqueBeanDefinitionException if more than one matching bean was found * @throws BeansException if dependency resolution failed for any other reason - * @see #resolveDependency(DependencyDescriptor, String, Set, TypeConverter) * @since 2.5 + * @see #resolveDependency(DependencyDescriptor, String, Set, TypeConverter) */ Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName) throws BeansException; /** * Resolve the specified dependency against the beans defined in this factory. - * @param descriptor the descriptor for the dependency - * @param requestingBeanName the name of the bean which declares the present dependency - * @param autowiredBeanNames a Set that all names of autowired beans (used for resolving - * the present dependency) are supposed to be added to + * @param descriptor the descriptor for the dependency (field/method/constructor) + * @param requestingBeanName the name of the bean which declares the given dependency + * @param autowiredBeanNames a Set that all names of autowired beans (used for + * resolving the given dependency) are supposed to be added to * @param typeConverter the TypeConverter to use for populating arrays and collections * @return the resolved object, or {@code null} if none found * @throws NoSuchBeanDefinitionException if no matching bean was found * @throws NoUniqueBeanDefinitionException if more than one matching bean was found * @throws BeansException if dependency resolution failed for any other reason - * @see DependencyDescriptor * @since 2.5 + * @see DependencyDescriptor */ Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName, Set autowiredBeanNames, TypeConverter typeConverter) throws BeansException; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index 82170e8eb5..11591c79bf 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -989,6 +989,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto private NamedBeanHolder resolveNamedBean(Class requiredType, Object... args) throws BeansException { Assert.notNull(requiredType, "Required type must not be null"); String[] beanNames = getBeanNamesForType(requiredType); + if (beanNames.length > 1) { ArrayList autowireCandidates = new ArrayList(); for (String beanName : beanNames) { @@ -1000,6 +1001,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto beanNames = autowireCandidates.toArray(new String[autowireCandidates.size()]); } } + if (beanNames.length == 1) { String beanName = beanNames[0]; return new NamedBeanHolder(beanName, getBean(beanName, requiredType, args)); @@ -1019,6 +1021,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } throw new NoUniqueBeanDefinitionException(requiredType, candidates.keySet()); } + return null; }