本文将引导您完成使用Spring Webflux路由器创建端点的过程。假设在Spring MVC中,我们正在使用@ControllerWebFlux。
路由器功能
传入请求被路由到处理函数RouterFunction<T>,它具有与@RequestMapping注释类似的功能:
@Configuration public class WebConfig {
@Autowired private PersonRepository personRepository;
@Bean public RouterFunction<ServerResponse> routes(){ return RouterFunctions .route(GET("/persons"), request -> ServerResponse.ok().body(personRepository.findAll(), Person.class)) .andRoute(GET("/persons/{id}"), request -> ServerResponse.ok().body(personRepository.findById(request.pathVariable("id")), Person.class)); }
}
|
最初的Spring Web MVC在Tomcat上运行,专门为Servlet API和Servlet容器构建。反应式Web框架Spring WebFlux是完全无阻塞的,支持Reactive Streams并在Netty服务器上运行,但最后从客户端的角度来看,我们以相同的方式对其进行了访问。
因此,在将上面配置类添加到项目并运行Spring Boot之后,您可以访问:http:// localhost:8080/ persons 响应格式如下:
[ { "uuid": "7baac840-0ff1-4eea-a1f3-78a6320f5bcc", "nickname": "edzero", "email": "edzero@email.com" }, { "uuid": "7b098510-e260-4dc2-8b15-24fc403eb939", "nickname": "skuarch", "email": "skuarch@email.com" },
|
通过id获取指定一个人信息的端点: http://localhost:8080/persons/5904ff32-7e36-4a81-b90f-c0d7a91214eb
{ "uuid": "5904ff32-7e36-4a81-b90f-c0d7a91214eb", "nickname": "josdem", "email": "josdem@email.com" }
|
结论
简要总结一下:
- Spring Boot现在采用了反应式编程
- 路由器功能路由到处理函数
- 路由器功能可以在响应式Web运行时中运行
- WebFlux与Java函数编程完美结合
- WebFlux默认在Netty服务器上运行
请转到此处下载项目。