在https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt該評論顯示瞭如何通過新的「功能bean定義Kotlin DSL」來定義Spring Beans。我也發現https://github.com/sdeleuze/spring-kotlin-functional。但是,此示例僅使用普通彈簧而不是彈簧引導。任何提示如何使用DSL一起使用彈簧啓動讚賞。如何使用Spring Boot和Spring WebFlux的「功能bean定義Kotlin DSL」?
2
A
回答
7
Spring Boot基於Java Config,但應允許通過ApplicationContextInitializer
支持用戶定義的functional bean declaration DSL的實驗性支持,如here所述。
實際上,您應該能夠聲明您的bean,例如在包含beans()
函數的Beans.kt
文件中。
fun beans() = beans {
// Define your bean with Kotlin DSL here
}
然後以使其在賬戶被啓動運行main()
和測試時拍攝,創建一個ApplicationContextInitializer
類如下:
class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {
override fun initialize(context: GenericApplicationContext) =
beans().initialize(context)
}
最終,在你的application.properties
文件中聲明這個初始化:
context.initializer.classes=com.example.BeansInitializer
你會發現一個完整的例子here,也可以按照this issue關於功能性bean註冊的專用Spring Boot支持。
+0
有關您的答案的兩個問題: *此初始化將由測試設置使用具有JUnit的'SpringRunner'選取,對吧? *有沒有其他方式可以在不創建'properties'文件的情況下產生這種行爲,包括在測試中拾取這個初始化? 謝謝! –
相關問題
- 1. Kotlin&Spring Boot @ConfigurationProperties
- 2. Kotlin spring-boot @ConfigurationProperties
- 3. Spring Boot v2.0.0.M2 webflux和執行器
- 4. Spring Boot Kotlin Jersey ModelValidationException
- 5. 如何在Spring webflux應用程序中使用Spring WebSessionIdResolver和Spring Security 5?
- 6. Spring webflux是否支持javax bean驗證?
- 7. 重用bean定義在Spring
- 8. 如何在沒有spring-boot的情況下在spring-webflux中加載配置?
- 9. jaxbmarshaller spring boot找不到bean?
- 10. Spring Boot Bean創建異常
- 11. Spring Boot - Bean創建異常
- 12. Spring Boot - Bean名爲entityManagerFactory
- 13. Spring Boot和Swagger
- 14. Spring-boot,tomcat-embedded - 如何定義catalina.properties?
- 15. Grails中的Spring bean定義
- 16. Liberty Spring Boot vs Spring Boot
- 17. 如何使用elasticsearch 5.2.1配置Spring Boot?
- 18. 如何在Spring Boot應用程序中爲Netty配置TLS?
- 19. Spring Boot和Teradata UnsatisfiedDependencyException
- 20. 帶功能Webflux的文件上傳
- 21. 如何在spring中定義bean mvc
- 22. 在Spring應用程序中使用Vaadin和Spring WebFlux,我如何設置路由?
- 23. 根據Spring的bean定義bean
- 24. 自定義自動配置的Spring Boot Bean
- 25. spring-boot-starter-jta-atomikos和spring-boot-starter-batch
- 26. Spring Boot + Spring Security使用AngularJS登錄
- 27. Spring Boot和Spring Data Rest
- 28. Docker和Spring Boot
- 29. 如何使用spring-boot指定spring-data-mongodb版本?
- 30. 爲什麼Spring @Qualifier不能與Spock和Spring Boot配合使用
你剛剛試過了嗎?把這個bean的定義放到一個控制器中(這是通過spring引導發現的)? – guenhter
是的,我嘗試了一個'@ Configuration'類和'@ Bean'方法,返回'beans {...}'的結果。然後我得到異常'「...沒有可用的'...'類型的可用bean ...」'當我移除@ @ Service'並在上面的'beans {...}'lambda中聲明服務類時。 –