Bei https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt der Kommentar zeigt, wie Spring Beans über die neue "Functional Bean Definition Kotlin DSL" zu definieren. Ich fand auch https://github.com/sdeleuze/spring-kotlin-functional. In diesem Beispiel wird jedoch nur plain Spring und nicht Spring Boot verwendet. Irgendein Hinweis, wie man das DSL zusammen mit Frühling Boot benutzt, wird geschätzt.Wie funktioniert "Functional Bean Definition Kotlin DSL" mit Spring Boot und Spring WebFlux?
Antwort
Spring Boot basiert auf Java Config, sollte aber experimentelle Unterstützung von benutzerdefinierten functional bean declaration DSL über ApplicationContextInitializer
Unterstützung wie beschrieben here ermöglichen.
In der Praxis sollten Sie in der Lage sein, Ihre Beans zum Beispiel in einer Beans.kt
Datei zu deklarieren, die eine beans()
Funktion enthält.
fun beans() = beans {
// Define your bean with Kotlin DSL here
}
Dann, um es in Rechnung durch Stiefel genommen, wenn main()
und Tests ausgeführt wird, erstellen Sie eine ApplicationContextInitializer
Klasse wie folgt:
class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {
override fun initialize(context: GenericApplicationContext) =
beans().initialize(context)
}
Und schließlich erklären diese initializer in Ihrer application.properties
Datei:
context.initializer.classes=com.example.BeansInitializer
Sie ein vollständiges Beispiel here finden und können auch this issue folgen über dedizierte Spring Boot-Unterstützung für die Registrierung funktionaler Bohnen.
Zwei Fragen zu Ihrer Antwort: * Diese Initialisierung wird vom Test-Setup mit einem 'SpringRunner' mit JUnit aufgenommen, oder? * Gibt es eine andere Möglichkeit, dieses Verhalten zu haben, ohne 'Eigenschaften'-Dateien erstellen zu müssen, einschließlich dieser Initialisierung, die bei Tests aufgenommen wird? Danke! –
- 1. Datei-Upload mit Functional Webflux
- 2. wie man config in spring-webflux ohne feder-boot lädt?
- 3. Spring Boot v2.0.0.M2 Webflux und Aktor
- 4. Kotlin & Spring Boot @ConfigurationProperties
- 5. Wohin mit @Bean Spring Boot?
- 6. Unterstützt spring webflux die Validierung von Java-Bean?
- 7. Spring Boot Kotlin Jersey ModelValidationException
- 8. Spring Boot @Autowired mit Kotlin in @Service ist immer Null
- 9. Spring MVC: Wie funktioniert Spring Bean?
- 10. Bean Lifecycle Management Spring Boot
- 11. Daten in BEAN speichern (Spring Boot REST)
- 12. Spring Boot Bean Erstellung Exception
- 13. Konfigurierter ObjectMapper nicht in Spring-Boot-Webflux verwendet
- 14. Spring Boot - Bean namens entityManagerFactory
- 15. Wie funktioniert Spring Bean Parallelität
- 16. Spring Java Config Bean Definition überschreiben
- 17. Spring Transaction Management funktioniert nicht mit Spring Boot + MyBatis?
- 18. Warum funktioniert Spring @Scheduled nicht mit @Bean
- 19. Spring MVC (async) vs Spring WebFlux
- 20. Spring Integration JMS DSL
- 21. Spring Webflux einschließlich Spring-Cloud-Starter-Eureka bricht Endpunkte
- 22. Liberty Spring Boot und Spring Boot
- 23. EntityManagerFactory Bean im Spring-Boot-Test
- 24. JSONView in Spring + Kotlin
- 25. WebFlux Web und Webflux Starter
- 26. Spring boot - cors funktioniert nicht
- 27. Spring Boot: Injection Bean in HttpServlet
- 28. Spring Security Oauth2 und Spring Boot-Problem
- 29. Standardanzahl der Threads in Spring Boot 2.0 reaktive Webflux-Konfiguration
- 30. Spring Security Webflux/Reaktive Ausnahmebehandlung
Haben Sie es gerade ausprobiert, z. indem Sie diese Bean-Definition in einen Controller einfügen (der im Spring-Boot-Modus entdeckt wird)? – guenhter
Ja, ich habe versucht eine '@ Configuration' Klasse mit einer' @ Bean' Methode, die das Ergebnis von 'beans {...}' zurückgibt. Dann bekam ich die Ausnahme '" ... Keine qualifizierende Bean vom Typ '...' verfügbar ... "', wenn ich '@ Service' lösche und die Serviceklasse im obigen' bohnen {...} 'Lambda deklariere . –