Skip to content

Commit 572abbc

Browse files
committed
do not ever consider Object as a candidate type for autowiring by type (SPR-6600)
1 parent e74b332 commit 572abbc

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

org.springframework.beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,24 +1124,27 @@ protected void autowireByType(
11241124
for (String propertyName : propertyNames) {
11251125
try {
11261126
PropertyDescriptor pd = bw.getPropertyDescriptor(propertyName);
1127-
MethodParameter methodParam = BeanUtils.getWriteMethodParameter(pd);
1128-
// Do not allow eager init for type matching in case of a prioritized post-processor.
1129-
boolean eager = !PriorityOrdered.class.isAssignableFrom(bw.getWrappedClass());
1130-
DependencyDescriptor desc = new DependencyDescriptor(methodParam, false, eager);
1131-
1132-
Object autowiredArgument = resolveDependency(desc, beanName, autowiredBeanNames, converter);
1133-
if (autowiredArgument != null) {
1134-
pvs.add(propertyName, autowiredArgument);
1135-
}
1136-
for (String autowiredBeanName : autowiredBeanNames) {
1137-
registerDependentBean(autowiredBeanName, beanName);
1138-
if (logger.isDebugEnabled()) {
1139-
logger.debug(
1140-
"Autowiring by type from bean name '" + beanName + "' via property '" + propertyName +
1141-
"' to bean named '" + autowiredBeanName + "'");
1127+
// Don't try autowiring by type for type Object: never makes sense,
1128+
// even if it technically is a unsatisfied, non-simple property.
1129+
if (!Object.class.equals(pd.getPropertyType())) {
1130+
MethodParameter methodParam = BeanUtils.getWriteMethodParameter(pd);
1131+
// Do not allow eager init for type matching in case of a prioritized post-processor.
1132+
boolean eager = !PriorityOrdered.class.isAssignableFrom(bw.getWrappedClass());
1133+
DependencyDescriptor desc = new DependencyDescriptor(methodParam, false, eager);
1134+
Object autowiredArgument = resolveDependency(desc, beanName, autowiredBeanNames, converter);
1135+
if (autowiredArgument != null) {
1136+
pvs.add(propertyName, autowiredArgument);
1137+
}
1138+
for (String autowiredBeanName : autowiredBeanNames) {
1139+
registerDependentBean(autowiredBeanName, beanName);
1140+
if (logger.isDebugEnabled()) {
1141+
logger.debug(
1142+
"Autowiring by type from bean name '" + beanName + "' via property '" + propertyName +
1143+
"' to bean named '" + autowiredBeanName + "'");
1144+
}
11421145
}
1146+
autowiredBeanNames.clear();
11431147
}
1144-
autowiredBeanNames.clear();
11451148
}
11461149
catch (BeansException ex) {
11471150
throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex);

0 commit comments

Comments
 (0)