在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中声明服务类时。 –