¿Cómo usar "Definición funcional de frijoles Kotlin DSL" con Spring Boot y Spring WebFlux?

En https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt, el comentario muestra cómo definir Spring Beans a través de la nueva "Definición de frijol funcional Kotlin DSL". También encontré https://github.com/sdeleuze/spring-kotlin-functional . Sin embargo, este ejemplo usa simplemente Spring y no Spring Boot . Cualquier sugerencia de cómo usar el DSL junto con Spring Boot es apreciada.

Spring Boot se basa en Java Config, pero debe permitir el soporte experimental de DSL de statement de beans funcional definida por el usuario a través del soporte de ApplicationContextInitializer como se describe aquí .

En la práctica, debería poder declarar sus beans, por ejemplo, en un file Beans.kt que contenga una function beans() .

 fun beans() = beans { // Define your bean with Kotlin DSL here } 

Luego, para que sea considerado por Boot al ejecutar main() y testings, cree una class ApplicationContextInitializer la siguiente manera:

 class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> { override fun initialize(context: GenericApplicationContext) = beans().initialize(context) } 

Y finalmente, declare este inicializador en su file application.properties :

 context.initializer.classes=com.example.BeansInitializer 

Aquí encontrará un ejemplo completo y también puede seguir este tema sobre el soporte dedicado de Spring Boot para el logging funcional de beans.