/**
* Servlet
* 请求接口:ServletRequest 或者 HttpServletRequest
* 响应接口:ServletResponse 或者 HttpServletResponse
* Spring5.0重新定义了服务请求和响应接口:
* 请求接口:ServerRequest
* 响应接口:ServerResponse
* 即可支持Servlet规范,也可以支持自定义,比如Netty(Web Server)
* 以本例:
* 定义get请求,返回所用的用户对象URI:/person/find/all
* Flux 是 0 - N 个对象集合
* Mono是 0 - 1 个对象集合
* Reactive 中的 Flux 或者 Mono 是异步处理(这种处理方式是非阻塞的)
* 而一般的集合对象是同步处理(是阻塞的)
*/
@Bean
@Autowired
public RouterFunction<ServerResponse> personFindAll(UserRepository userRepository){
return RouterFunctions.route(RequestPredicates.GET("person/find/all"),
serverRequest -> {
Collection<User> users = userRepository.findAll();
Flux<User> userFlux = Flux.fromIterable(users);
return ServerResponse.ok().body(userFlux);
});
}