|
|
|
@ -1124,24 +1124,27 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac |
|
|
|
|
for (String propertyName : propertyNames) { |
|
|
|
|
try { |
|
|
|
|
PropertyDescriptor pd = bw.getPropertyDescriptor(propertyName); |
|
|
|
|
MethodParameter methodParam = BeanUtils.getWriteMethodParameter(pd); |
|
|
|
|
// Do not allow eager init for type matching in case of a prioritized post-processor.
|
|
|
|
|
boolean eager = !PriorityOrdered.class.isAssignableFrom(bw.getWrappedClass()); |
|
|
|
|
DependencyDescriptor desc = new DependencyDescriptor(methodParam, false, eager); |
|
|
|
|
|
|
|
|
|
Object autowiredArgument = resolveDependency(desc, beanName, autowiredBeanNames, converter); |
|
|
|
|
if (autowiredArgument != null) { |
|
|
|
|
pvs.add(propertyName, autowiredArgument); |
|
|
|
|
} |
|
|
|
|
for (String autowiredBeanName : autowiredBeanNames) { |
|
|
|
|
registerDependentBean(autowiredBeanName, beanName); |
|
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
|
logger.debug( |
|
|
|
|
"Autowiring by type from bean name '" + beanName + "' via property '" + propertyName + |
|
|
|
|
"' to bean named '" + autowiredBeanName + "'"); |
|
|
|
|
// Don't try autowiring by type for type Object: never makes sense,
|
|
|
|
|
// even if it technically is a unsatisfied, non-simple property.
|
|
|
|
|
if (!Object.class.equals(pd.getPropertyType())) { |
|
|
|
|
MethodParameter methodParam = BeanUtils.getWriteMethodParameter(pd); |
|
|
|
|
// Do not allow eager init for type matching in case of a prioritized post-processor.
|
|
|
|
|
boolean eager = !PriorityOrdered.class.isAssignableFrom(bw.getWrappedClass()); |
|
|
|
|
DependencyDescriptor desc = new DependencyDescriptor(methodParam, false, eager); |
|
|
|
|
Object autowiredArgument = resolveDependency(desc, beanName, autowiredBeanNames, converter); |
|
|
|
|
if (autowiredArgument != null) { |
|
|
|
|
pvs.add(propertyName, autowiredArgument); |
|
|
|
|
} |
|
|
|
|
for (String autowiredBeanName : autowiredBeanNames) { |
|
|
|
|
registerDependentBean(autowiredBeanName, beanName); |
|
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
|
logger.debug( |
|
|
|
|
"Autowiring by type from bean name '" + beanName + "' via property '" + propertyName + |
|
|
|
|
"' to bean named '" + autowiredBeanName + "'"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
autowiredBeanNames.clear(); |
|
|
|
|
} |
|
|
|
|
autowiredBeanNames.clear(); |
|
|
|
|
} |
|
|
|
|
catch (BeansException ex) { |
|
|
|
|
throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex); |
|
|
|
|