diff --git a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java index d37d0e1d973..d4675d2c032 100644 --- a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java @@ -485,6 +485,9 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA @Override public @Nullable Class getPropertyType(String propertyName) throws BeansException { + if (this.wrappedObject == null) { + return null; + } try { PropertyHandler ph = getPropertyHandler(propertyName); if (ph != null) { diff --git a/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java b/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java index 02c4c9e45fa..09cb89f49b2 100644 --- a/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java +++ b/spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java @@ -189,7 +189,7 @@ public class BeanWrapperImpl extends AbstractNestablePropertyAccessor implements } @Override - protected @Nullable BeanPropertyHandler getLocalPropertyHandler(String propertyName) { + protected @Nullable PropertyHandler getLocalPropertyHandler(String propertyName) { PropertyDescriptor pd = getCachedIntrospectionResults().getPropertyDescriptor(propertyName); return (pd != null ? new BeanPropertyHandler((GenericTypeAwarePropertyDescriptor) pd) : null); } diff --git a/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java b/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java index c847437b72c..99f39bcf37a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/DirectFieldAccessor.java @@ -73,7 +73,7 @@ public class DirectFieldAccessor extends AbstractNestablePropertyAccessor { @Override - protected @Nullable FieldPropertyHandler getLocalPropertyHandler(String propertyName) { + protected @Nullable PropertyHandler getLocalPropertyHandler(String propertyName) { FieldPropertyHandler propertyHandler = this.fieldMap.get(propertyName); if (propertyHandler == null) { Field field = ReflectionUtils.findField(getWrappedClass(), propertyName);