具有 kotlin 功能路由器的非反应性 Spring 网络

Non-reactive Spring web with kotlin functional router

我可以使用新的 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)
    }
}

使用非反应性 Web 部件?从某种意义上说,底层数据库将是 Postgres 和基于非 Reactive servlet 的应用程序服务器,因此我不会 want/need 将 Flux 或 Mono 用于 return 类型的 barHandler 或存储库功能。但我确实喜欢与 Kotlin 一起使用的新路由器 DSL,它比基于注释的功能更强大 @RequestMapping 并且更容易掌握所有应用程序路由。

您示例中的 DSL 是 Spring WebFlux 的一部分,也就是您所说的 "reactive"。在此官方博客 post 中,功能被介绍为 "Spring WebFlux functional DSL"。

DSL入口点router定义在包org.springframework.web.reactive.function.server中,这也验证了我之前所说的。您可以在 GitHub.

上查看

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

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