Skip to content

Commit 9649b0c

Browse files
committed
Properly resolve null beans as getBeansOfType result entries
Issue: SPR-16163
1 parent 2d1f875 commit 9649b0c

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,14 +505,16 @@ public <T> Map<String, T> getBeansOfType(@Nullable Class<T> type) throws BeansEx
505505
}
506506

507507
@Override
508+
@SuppressWarnings("unchecked")
508509
public <T> Map<String, T> getBeansOfType(@Nullable Class<T> type, boolean includeNonSingletons, boolean allowEagerInit)
509510
throws BeansException {
510511

511512
String[] beanNames = getBeanNamesForType(type, includeNonSingletons, allowEagerInit);
512513
Map<String, T> result = new LinkedHashMap<>(beanNames.length);
513514
for (String beanName : beanNames) {
514515
try {
515-
result.put(beanName, getBean(beanName, type));
516+
Object beanInstance = getBean(beanName);
517+
result.put(beanName, (beanInstance instanceof NullBean ? null : (T) beanInstance));
516518
}
517519
catch (BeanCreationException ex) {
518520
Throwable rootCause = ex.getMostSpecificCause();

spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,11 @@ public void testConstructorResourceInjectionWithCollectionAndNullFromFactoryBean
701701
assertEquals(2, bean.getNestedTestBeans().size());
702702
assertNull(bean.getNestedTestBeans().get(0));
703703
assertSame(ntb2, bean.getNestedTestBeans().get(1));
704+
705+
Map<String, NestedTestBean> map = bf.getBeansOfType(NestedTestBean.class);
706+
assertNull(map.get("nestedTestBean1"));
707+
assertSame(ntb2, map.get("nestedTestBean2"));
708+
704709
bf.destroySingletons();
705710
}
706711

0 commit comments

Comments
 (0)