DefaultListableBeanFactory's registerBeanDefinition only calls resetBeanDefinition in case of pre-existing bean definition or pre-existing singleton instance
Issue: SPR-8318
This commit is contained in:
@@ -765,8 +765,10 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BeanDefinition oldBeanDefinition;
|
||||||
|
|
||||||
synchronized (this.beanDefinitionMap) {
|
synchronized (this.beanDefinitionMap) {
|
||||||
BeanDefinition oldBeanDefinition = this.beanDefinitionMap.get(beanName);
|
oldBeanDefinition = this.beanDefinitionMap.get(beanName);
|
||||||
if (oldBeanDefinition != null) {
|
if (oldBeanDefinition != null) {
|
||||||
if (!this.allowBeanDefinitionOverriding) {
|
if (!this.allowBeanDefinitionOverriding) {
|
||||||
throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,
|
throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,
|
||||||
@@ -795,7 +797,9 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
|
|||||||
this.beanDefinitionMap.put(beanName, beanDefinition);
|
this.beanDefinitionMap.put(beanName, beanDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
resetBeanDefinition(beanName);
|
if (oldBeanDefinition != null || containsSingleton(beanName)) {
|
||||||
|
resetBeanDefinition(beanName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -831,9 +835,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
|
|||||||
// (e.g. the default StaticMessageSource in a StaticApplicationContext).
|
// (e.g. the default StaticMessageSource in a StaticApplicationContext).
|
||||||
destroySingleton(beanName);
|
destroySingleton(beanName);
|
||||||
|
|
||||||
// Remove any assumptions about by-type mappings.
|
|
||||||
clearByTypeCache();
|
|
||||||
|
|
||||||
// Reset all bean definitions that have the given bean as parent (recursively).
|
// Reset all bean definitions that have the given bean as parent (recursively).
|
||||||
for (String bdName : this.beanDefinitionNames) {
|
for (String bdName : this.beanDefinitionNames) {
|
||||||
if (!beanName.equals(bdName)) {
|
if (!beanName.equals(bdName)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user