diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java index fb6e370135..2379675c81 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java @@ -1503,10 +1503,13 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp */ protected void markBeanAsCreated(String beanName) { if (!this.alreadyCreated.contains(beanName)) { - // Let the bean definition get re-merged now that we're actually creating - // the bean... just in case some of its metadata changed in the meantime. - clearMergedBeanDefinition(beanName); - this.alreadyCreated.add(beanName); + synchronized (this.mergedBeanDefinitions) { + if (this.alreadyCreated.add(beanName)) { + // Let the bean definition get re-merged now that we're actually creating + // the bean... just in case some of its metadata changed in the meantime. + clearMergedBeanDefinition(beanName); + } + } } }