Java >> Programma Java >  >> Tag >> Spring

Come utilizzare la definizione di bean funzionale Kotlin DSL con Spring Boot e Spring WebFlux?

Spring Boot è basato su Java Config, ma dovrebbe consentire il supporto sperimentale della dichiarazione di bean funzionale definita dall'utente DSL tramite ApplicationContextInitializer supporto come descritto qui.

In pratica, dovresti essere in grado di dichiarare i tuoi bean ad esempio in un Beans.kt file contenente un beans() funzione.

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

Quindi per renderlo preso in considerazione da Boot durante l'esecuzione di main() e test, crea un ApplicationContextInitializer classe come segue:

class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {

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

}

Infine, dichiara questo inizializzatore nel tuo application.properties file:

context.initializer.classes=com.example.BeansInitializer  

Troverai un esempio completo qui e potrai anche seguire questo problema sul supporto Spring Boot dedicato per la registrazione dei bean funzionali.


Un altro modo per farlo in Spring Boot sarebbe:

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args) {
        addInitializers(
                beans {
                    // Define your bean with Kotlin DSL here
                }
        )
    }
}

Puoi definire i tuoi bean nel file *Config.kt e implementare il metodo di inizializzazione di ApplicationContextInitializer interfaccia.

override fun initialize(applicationContext: GenericApplicationContext) {
    ....
}

Qualche definizione di fagiolo qui.

bean<XServiceImpl>("xService")

bean("beanName") {
        BeanConstructor(ref("refBeanName"))
}

Etichetta Java