一尘不染

如何在Spring Boot和Spring WebFlux中使用“功能bean定义Kotlin DSL”?

spring-boot

https://github.com/spring-projects/spring-framework/blob/master/spring-
context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt处,注释显示了如何定义Spring
Beans通过新的“功能bean定义Kotlin DSL”。我还发现了https://github.com/sdeleuze/spring-kotlin-
functional。但是,此示例仅使用
普通 Spring而不使用Spring Boot 。任何有关如何将DSL与Spring Boot 一起使用的提示均表示赞赏。


阅读 318

收藏
2020-05-30

共1个答案

一尘不染

Spring Boot基于Java
Config,但应通过此处所述的支持,允许对用户定义的功能bean声明DSL的实验性支持。ApplicationContextInitializer

实际上,您应该能够在Beans.kt包含beans()函数的文件中声明自己的bean 。

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

然后,为了使Boot在运行main()和测试时考虑到这一点,请创建一个ApplicationContextInitializer如下类:

class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {

    override fun initialize(context: GenericApplicationContext) =
        beans().initialize(context)

}

最后,在application.properties文件中声明此初始化程序:

context.initializer.classes=com.example.BeansInitializer

您可以在此处找到完整的示例,也可以关注有关针对功能性bean注册的专用Spring
Boot支持的此问题

2020-05-30