Spring 5 的新函数式方法将请求委托给处理函数,这些函数接受一个服务器请求实例并返回一种反应式类型。来看一段代码,创建BookHandler 类,其中listBook() 和getBook() 方法相当于Controller中的功能。
通过路由函数来匹配HTTP 请求参数与媒体类型,将客户端请求路由到处理函数。下面的代码展示了图书资源端点URI 将调用委托给合适的处理函数:
BookHandler handler = new BookHandler();
RouterFunction<ServerResponse> personRoute =
route(
GET("/books/{id}")
.and(accept(APPLICATION_JSON)), handler::getBook)
.andRoute(
GET("/books")
.and(accept(APPLICATION_JSON)), handler::listBooks);
这些示例背后的数据存储库也支持完整的反应式体验,该体验是通过Spring Data 对反应式Couchbase、Reactive MongoDB 和Cassandra 的支持来实现的。