Skip to content

Commit 6eac141

Browse files
committed
Restore non-null check for requiredType in BeanFactory methods
Beginning with Spring Framework 5.0, non-null checks for the requiredType in the following methods were inadvertently removed with the internal switch to ResolvableType.forRawClass(requiredType). - BeanFactory.getBean(Class<T>, Object...) - BeanFactory.getBeanProvider(Class<T>) - AutowireCapableBeanFactory.resolveNamedBean(Class<T>) This commit restores those non-null checks. Closes gh-23045
1 parent 6833317 commit 6eac141

File tree

3 files changed

+73
-197
lines changed

3 files changed

+73
-197
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/BeanFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public interface BeanFactory {
208208
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
209209

210210
/**
211-
* Return an provider for the specified bean, allowing for lazy on-demand retrieval
211+
* Return a provider for the specified bean, allowing for lazy on-demand retrieval
212212
* of instances, including availability and uniqueness options.
213213
* @param requiredType type the bean must match; can be an interface or superclass
214214
* @return a corresponding provider handle
@@ -218,7 +218,7 @@ public interface BeanFactory {
218218
<T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);
219219

220220
/**
221-
* Return an provider for the specified bean, allowing for lazy on-demand retrieval
221+
* Return a provider for the specified bean, allowing for lazy on-demand retrieval
222222
* of instances, including availability and uniqueness options.
223223
* @param requiredType type the bean must match; can be a generic type declaration.
224224
* Note that collection types are not supported here, in contrast to reflective

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ public <T> T getBean(Class<T> requiredType) throws BeansException {
340340
@SuppressWarnings("unchecked")
341341
@Override
342342
public <T> T getBean(Class<T> requiredType, @Nullable Object... args) throws BeansException {
343+
Assert.notNull(requiredType, "Required type must not be null");
343344
Object resolved = resolveBean(ResolvableType.forRawClass(requiredType), args, false);
344345
if (resolved == null) {
345346
throw new NoSuchBeanDefinitionException(requiredType);
@@ -349,6 +350,7 @@ public <T> T getBean(Class<T> requiredType, @Nullable Object... args) throws Bea
349350

350351
@Override
351352
public <T> ObjectProvider<T> getBeanProvider(Class<T> requiredType) throws BeansException {
353+
Assert.notNull(requiredType, "Required type must not be null");
352354
return getBeanProvider(ResolvableType.forRawClass(requiredType));
353355
}
354356

@@ -1080,6 +1082,7 @@ private void clearByTypeCache() {
10801082

10811083
@Override
10821084
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
1085+
Assert.notNull(requiredType, "Required type must not be null");
10831086
NamedBeanHolder<T> namedBean = resolveNamedBean(ResolvableType.forRawClass(requiredType), null, false);
10841087
if (namedBean != null) {
10851088
return namedBean;

0 commit comments

Comments
 (0)