AbstractAutowireCapableBeanFactory's createBean/autowireBean/configureBean use CacheUtils.isCacheSafe to re-enable PropertyDescriptor caching
Issue: SPR-11875
This commit is contained in:
@@ -286,7 +286,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||||||
// Use prototype bean definition, to avoid registering bean as dependent bean.
|
// Use prototype bean definition, to avoid registering bean as dependent bean.
|
||||||
RootBeanDefinition bd = new RootBeanDefinition(beanClass);
|
RootBeanDefinition bd = new RootBeanDefinition(beanClass);
|
||||||
bd.setScope(SCOPE_PROTOTYPE);
|
bd.setScope(SCOPE_PROTOTYPE);
|
||||||
bd.allowCaching = false;
|
bd.allowCaching = ClassUtils.isCacheSafe(beanClass, getBeanClassLoader());
|
||||||
return (T) createBean(beanClass.getName(), bd, null);
|
return (T) createBean(beanClass.getName(), bd, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||||||
// Use non-singleton bean definition, to avoid registering bean as dependent bean.
|
// Use non-singleton bean definition, to avoid registering bean as dependent bean.
|
||||||
RootBeanDefinition bd = new RootBeanDefinition(ClassUtils.getUserClass(existingBean));
|
RootBeanDefinition bd = new RootBeanDefinition(ClassUtils.getUserClass(existingBean));
|
||||||
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE);
|
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE);
|
||||||
bd.allowCaching = false;
|
bd.allowCaching = ClassUtils.isCacheSafe(bd.getBeanClass(), getBeanClassLoader());
|
||||||
BeanWrapper bw = new BeanWrapperImpl(existingBean);
|
BeanWrapper bw = new BeanWrapperImpl(existingBean);
|
||||||
initBeanWrapper(bw);
|
initBeanWrapper(bw);
|
||||||
populateBean(bd.getBeanClass().getName(), bd, bw);
|
populateBean(bd.getBeanClass().getName(), bd, bw);
|
||||||
@@ -315,7 +315,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||||||
bd = new RootBeanDefinition(mbd);
|
bd = new RootBeanDefinition(mbd);
|
||||||
}
|
}
|
||||||
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE);
|
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE);
|
||||||
bd.allowCaching = false;
|
bd.allowCaching = ClassUtils.isCacheSafe(ClassUtils.getUserClass(existingBean), getBeanClassLoader());
|
||||||
}
|
}
|
||||||
BeanWrapper bw = new BeanWrapperImpl(existingBean);
|
BeanWrapper bw = new BeanWrapperImpl(existingBean);
|
||||||
initBeanWrapper(bw);
|
initBeanWrapper(bw);
|
||||||
|
|||||||
Reference in New Issue
Block a user