web-dev-qa-db-ja.com

Spring BootおよびSpring WebFluxで「Functional Bean Definition Kotlin DSL」を使用する方法

https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt theコメントは、新しい「Functional Bean定義Kotlin DSL」を介してSpring Beanを定義する方法を示しています。私も https://github.com/sdeleuze/spring-kotlin-functional を見つけました。ただし、この例では、SpringBootではなく、plainSpringのみを使用しています。 SpringBootと一緒にDSLを使用する方法のヒントはありがたいです。

12

Spring BootはJava Configに基づいていますが、ユーザー定義の実験的なサポートを許可する必要があります Functional Bean宣言DSLApplicationContextInitializerサポートを介して ここ

実際には、たとえばbeans()関数を含む_Beans.kt_ファイルでBeanを宣言できるはずです。

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

次に、main()およびテストの実行時にBootによって考慮されるようにするには、次のようにApplicationContextInitializerクラスを作成します。

_class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {

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

}
_

そして最終的に、この初期化子を_application.properties_ファイルで宣言します。

_context.initializer.classes=com.example.BeansInitializer  
_

完全な例 ここ があり、機能的なBean登録のための専用のSpring Bootサポートについて この問題 に従うこともできます。

12

Spring Bootでそれを行う別の方法は次のようになります:

 fun main(args: Array<String>){

 SpringApplicationBuilder().initializers( beans {

    // Define your bean with Kotlin DSL here


 }).sources(MainClass::class.Java).run(*args);
1
fg78nc