Allow chained BeanRegistry registration
Add a `register(BeanRegistry registry)` method to `BeanRegistry` to allow registration chaining. See gh-34557
This commit is contained in:
committed by
Sébastien Deleuze
parent
a0e2d3a221
commit
789791e186
@@ -43,7 +43,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultBackgroundInit() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isBackgroundInit()).isFalse();
|
||||
@@ -51,7 +51,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void enableBackgroundInit() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, BackgroundInitBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, BackgroundInitBeanRegistrar.class);
|
||||
new BackgroundInitBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isBackgroundInit()).isTrue();
|
||||
@@ -59,7 +59,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultDescription() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getDescription()).isNull();
|
||||
@@ -67,7 +67,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void customDescription() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, CustomDescriptionBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, CustomDescriptionBeanRegistrar.class);
|
||||
new CustomDescriptionBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getDescription()).isEqualTo("custom");
|
||||
@@ -75,7 +75,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultFallback() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isFallback()).isFalse();
|
||||
@@ -83,7 +83,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void enableFallback() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, FallbackBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, FallbackBeanRegistrar.class);
|
||||
new FallbackBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isFallback()).isTrue();
|
||||
@@ -91,7 +91,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultRole() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getRole()).isEqualTo(AbstractBeanDefinition.ROLE_APPLICATION);
|
||||
@@ -99,7 +99,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void infrastructureRole() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, InfrastructureBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, InfrastructureBeanRegistrar.class);
|
||||
new InfrastructureBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getRole()).isEqualTo(AbstractBeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
@@ -107,7 +107,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultLazyInit() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isLazyInit()).isFalse();
|
||||
@@ -115,7 +115,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void enableLazyInit() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, LazyInitBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, LazyInitBeanRegistrar.class);
|
||||
new LazyInitBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isLazyInit()).isTrue();
|
||||
@@ -123,7 +123,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultAutowirable() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isAutowireCandidate()).isTrue();
|
||||
@@ -131,7 +131,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void notAutowirable() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, NotAutowirableBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, NotAutowirableBeanRegistrar.class);
|
||||
new NotAutowirableBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isAutowireCandidate()).isFalse();
|
||||
@@ -139,7 +139,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultOrder() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
Integer order = (Integer)beanDefinition.getAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE);
|
||||
@@ -148,7 +148,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void customOrder() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, CustomOrderBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, CustomOrderBeanRegistrar.class);
|
||||
new CustomOrderBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) this.beanFactory.getBeanDefinition("foo");
|
||||
Integer order = (Integer)beanDefinition.getAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE);
|
||||
@@ -157,7 +157,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultPrimary() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isPrimary()).isFalse();
|
||||
@@ -165,7 +165,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void enablePrimary() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, PrimaryBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, PrimaryBeanRegistrar.class);
|
||||
new PrimaryBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.isPrimary()).isTrue();
|
||||
@@ -173,7 +173,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultScope() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getScope()).isEqualTo(AbstractBeanDefinition.SCOPE_DEFAULT);
|
||||
@@ -181,7 +181,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void prototypeScope() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, PrototypeBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, PrototypeBeanRegistrar.class);
|
||||
new PrototypeBeanRegistrar().register(adapter, env);
|
||||
BeanDefinition beanDefinition = this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getScope()).isEqualTo(AbstractBeanDefinition.SCOPE_PROTOTYPE);
|
||||
@@ -189,7 +189,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void defaultSupplier() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, DefaultBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
new DefaultBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition)this.beanFactory.getBeanDefinition("foo");
|
||||
assertThat(beanDefinition.getInstanceSupplier()).isNull();
|
||||
@@ -197,7 +197,7 @@ public class BeanRegistryAdapterTests {
|
||||
|
||||
@Test
|
||||
void customSupplier() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, SupplierBeanRegistrar.class);
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, SupplierBeanRegistrar.class);
|
||||
new SupplierBeanRegistrar().register(adapter, env);
|
||||
AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition)this.beanFactory.getBeanDefinition("foo");
|
||||
Supplier<?> supplier = beanDefinition.getInstanceSupplier();
|
||||
@@ -221,6 +221,14 @@ public class BeanRegistryAdapterTests {
|
||||
assertThat(beanDefinition.getResolvableType().resolveGeneric(0)).isEqualTo(Foo.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void registerViaAnotherRegistrar() {
|
||||
BeanRegistryAdapter adapter = new BeanRegistryAdapter(this.beanFactory, this.beanFactory, this.env, DefaultBeanRegistrar.class);
|
||||
BeanRegistrar registrar = (registry, env) -> registry.register(new DefaultBeanRegistrar());
|
||||
registrar.register(adapter, env);
|
||||
assertThat(this.beanFactory.getBeanDefinition("foo")).isNotNull();
|
||||
}
|
||||
|
||||
|
||||
private static class DefaultBeanRegistrar implements BeanRegistrar {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user