带有kotlin功能路由器的非反应式弹簧网

时间:2017-10-23 11:22:06

标签: spring spring-webflux spring-dsl

我可以使用新的Kotlin DSL来设置路由,例如:

router {
    ("/blog" and accept(TEXT_HTML)).nest {
        GET("/", fooHandler::findAllView)
        GET("/{slug}", fooHandler::findOneView)
    }
    ("/api/blog" and accept(APPLICATION_JSON)).nest {
        GET("/", barHandler::findAll)
        GET("/{id}", barHandler::findOne)
    }
}

非反应性网络部分?从某种意义上说,底层数据库将是Postgres和非Reactive基于servlet的应用程序服务器,因此我不希望/需要使用Flux或Mono来返回barHandler或存储库函数的类型。但是当我与Kotlin一起使用时,我确实喜欢新的路由器DSL,它比基于@RequestMapping的注释更强大,更容易掌握所有应用路径。

1 个答案:

答案 0 :(得分:2)

你的例子中的DSL是 Spring WebFlux 的一部分,这是你所说的“被动”的东西。在这个官方博客post中,该功能被引入为“Spring WebFlux 功能 DSL ”。

DSL入口点router在包org.springframework.web.reactive.function.server中定义,它还验证了我之前说过的内容。您可以在GitHub上查看。

您可以使用传统的Web MVC:功能bean声明DSL ,用于以如下方式定义应用程序bean:

beans {
    bean<Foo>()
    bean { Bar(ref()) }
}