Browse Source

Add BeanRegistrarDsl.register

See gh-34557
pull/34585/head
Sébastien Deleuze 9 months ago
parent
commit
762831e742
  1. 9
      spring-beans/src/main/kotlin/org/springframework/beans/factory/BeanRegistrarDsl.kt
  2. 14
      spring-context/src/test/kotlin/org/springframework/context/annotation/BeanRegistrarDslConfigurationTests.kt

9
spring-beans/src/main/kotlin/org/springframework/beans/factory/BeanRegistrarDsl.kt

@ -334,6 +334,15 @@ open class BeanRegistrarDsl(private val init: BeanRegistrarDsl.() -> Unit): Bean @@ -334,6 +334,15 @@ open class BeanRegistrarDsl(private val init: BeanRegistrarDsl.() -> Unit): Bean
return registry.registerBean(T::class.java, customizer)
}
/**
* Register beans using the given [BeanRegistrar].
* @param registrar the bean registrar that will be called to register
* additional beans
*/
fun register(registrar: BeanRegistrar) {
return registry.register(registrar)
}
/**
* Apply the nested block if the given profile expression matches the
* active profiles.

14
spring-context/src/test/kotlin/org/springframework/context/annotation/BeanRegistrarDslConfigurationTests.kt

@ -65,6 +65,12 @@ class BeanRegistrarDslConfigurationTests { @@ -65,6 +65,12 @@ class BeanRegistrarDslConfigurationTests {
assertThat(beanDefinition.resolvableType.resolveGeneric(0)).isEqualTo(Foo::class.java)
}
@Test
fun chainedBeanRegistrar() {
val context = AnnotationConfigApplicationContext(ChainedBeanRegistrarKotlinConfiguration::class.java)
assertThat(context.getBean<Bar>().foo).isEqualTo(context.getBean<Foo>())
}
class Foo
data class Bar(val foo: Foo)
data class Baz(val message: String = "")
@ -109,4 +115,12 @@ class BeanRegistrarDslConfigurationTests { @@ -109,4 +115,12 @@ class BeanRegistrarDslConfigurationTests {
}
}
})
@Configuration
@Import(ChainedBeanRegistrar::class)
internal class ChainedBeanRegistrarKotlinConfiguration
private class ChainedBeanRegistrar : BeanRegistrarDsl({
register(SampleBeanRegistrar())
})
}

Loading…
Cancel
Save