Web MVC 程序员应该对Spring 5 的基于注解的编程模型非常熟悉。Spring 5 调整了Web MVC的@Controller 编程模型,采用了相同的注解。
在下面的代码中BookController 类提供了两个方法,分别响应针对某个图书列表的HTTP 请求,以及针对具有给定id 的图书的HTTP 请求。请注意resource 方法返回的对象(Mono 和Flux)。这些对象是实现反应式流规范中的Publisher 接口的反应式类型。它们的职责是处理数据流。Mono 对象处理一个仅含1 个元素的流,而Flux 表示一个包含N 个元素的流。
反应式控制器
@RestController
public class BookController {
@GetMapping("/book")
Flux<Book> list() {
return this.repository.findAll();
}
@GetMapping("/book/{id}")
Mono<Book> findById(@PathVariable String id) {
return this.repository.findOne(id);
}
}
这是针对Spring Web 编程的注解。现在我们使用函数式Web 框架来解决同一个问题。