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