Register @Bean definitions as dependent on containing configuration class
Closes gh-26167
This commit is contained in:
@@ -410,6 +410,7 @@ class ConstructorResolver {
|
|||||||
if (mbd.isSingleton() && this.beanFactory.containsSingleton(beanName)) {
|
if (mbd.isSingleton() && this.beanFactory.containsSingleton(beanName)) {
|
||||||
throw new ImplicitlyAppearedSingletonException();
|
throw new ImplicitlyAppearedSingletonException();
|
||||||
}
|
}
|
||||||
|
this.beanFactory.registerDependentBean(factoryBeanName, beanName);
|
||||||
factoryClass = factoryBean.getClass();
|
factoryClass = factoryBean.getClass();
|
||||||
isStatic = false;
|
isStatic = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import java.lang.annotation.ElementType;
|
|||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -107,7 +106,9 @@ public class ConfigurationClassPostProcessorTests {
|
|||||||
Foo foo = beanFactory.getBean("foo", Foo.class);
|
Foo foo = beanFactory.getBean("foo", Foo.class);
|
||||||
Bar bar = beanFactory.getBean("bar", Bar.class);
|
Bar bar = beanFactory.getBean("bar", Bar.class);
|
||||||
assertThat(bar.foo).isSameAs(foo);
|
assertThat(bar.foo).isSameAs(foo);
|
||||||
assertThat(Arrays.asList(beanFactory.getDependentBeans("foo")).contains("bar")).isTrue();
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("foo"), "bar")).isTrue();
|
||||||
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "foo")).isTrue();
|
||||||
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "bar")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -119,7 +120,9 @@ public class ConfigurationClassPostProcessorTests {
|
|||||||
Foo foo = beanFactory.getBean("foo", Foo.class);
|
Foo foo = beanFactory.getBean("foo", Foo.class);
|
||||||
Bar bar = beanFactory.getBean("bar", Bar.class);
|
Bar bar = beanFactory.getBean("bar", Bar.class);
|
||||||
assertThat(bar.foo).isSameAs(foo);
|
assertThat(bar.foo).isSameAs(foo);
|
||||||
assertThat(Arrays.asList(beanFactory.getDependentBeans("foo")).contains("bar")).isTrue();
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("foo"), "bar")).isTrue();
|
||||||
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "foo")).isTrue();
|
||||||
|
assertThat(ObjectUtils.containsElement(beanFactory.getDependentBeans("config"), "bar")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user