@ -1124,24 +1124,27 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
@@ -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 ) ;