Skip to content

Commit 56dbe06

Browse files
committed
Register @bean definitions as dependent on containing configuration class
Closes gh-26167
1 parent 11f6c4e commit 56dbe06

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ public BeanWrapper instantiateUsingFactoryMethod(
410410
if (mbd.isSingleton() && this.beanFactory.containsSingleton(beanName)) {
411411
throw new ImplicitlyAppearedSingletonException();
412412
}
413+
this.beanFactory.registerDependentBean(factoryBeanName, beanName);
413414
factoryClass = factoryBean.getClass();
414415
isStatic = false;
415416
}

spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.lang.annotation.Retention;
2121
import java.lang.annotation.RetentionPolicy;
2222
import java.lang.annotation.Target;
23-
import java.util.Arrays;
2423
import java.util.List;
2524
import java.util.Map;
2625

@@ -107,7 +106,9 @@ public void enhancementIsPresentBecauseSingletonSemanticsAreRespected() {
107106
Foo foo = beanFactory.getBean("foo", Foo.class);
108107
Bar bar = beanFactory.getBean("bar", Bar.class);
109108
assertThat(bar.foo).isSameAs(foo);
110-
assertThat(Arrays.asList(beanFactory.getDependentBeans("foo")).contains("bar")).isTrue();
109+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("foo"), "bar")).isTrue();
110+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "foo")).isTrue();
111+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "bar")).isTrue();
111112
}
112113

113114
@Test
@@ -119,7 +120,9 @@ public void enhancementIsPresentBecauseSingletonSemanticsAreRespectedUsingAsm()
119120
Foo foo = beanFactory.getBean("foo", Foo.class);
120121
Bar bar = beanFactory.getBean("bar", Bar.class);
121122
assertThat(bar.foo).isSameAs(foo);
122-
assertThat(Arrays.asList(beanFactory.getDependentBeans("foo")).contains("bar")).isTrue();
123+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("foo"), "bar")).isTrue();
124+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "foo")).isTrue();
125+
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "bar")).isTrue();
123126
}
124127

125128
@Test

0 commit comments

Comments
 (0)