Skip to content

Commit 9064d38

Browse files
committed
AbstractBeanFactory.markBeanAsCreated() reliably clears merged bean definition only once
Issue: SPR-14269
1 parent bff8259 commit 9064d38

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

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

+7-4
Original file line numberDiff line numberDiff line change
@@ -1503,10 +1503,13 @@ else if (mbd.isLazyInit()) {
15031503
*/
15041504
protected void markBeanAsCreated(String beanName) {
15051505
if (!this.alreadyCreated.contains(beanName)) {
1506-
// Let the bean definition get re-merged now that we're actually creating
1507-
// the bean... just in case some of its metadata changed in the meantime.
1508-
clearMergedBeanDefinition(beanName);
1509-
this.alreadyCreated.add(beanName);
1506+
synchronized (this.mergedBeanDefinitions) {
1507+
if (this.alreadyCreated.add(beanName)) {
1508+
// Let the bean definition get re-merged now that we're actually creating
1509+
// the bean... just in case some of its metadata changed in the meantime.
1510+
clearMergedBeanDefinition(beanName);
1511+
}
1512+
}
15101513
}
15111514
}
15121515

0 commit comments

Comments
 (0)