Spring WebFlux
1.1 WebFlux 简介
Spring WebFlux是Spring Framework 5.0中引入的新的反应式Web框架。与Spring MVC不同,它不需要Servlet API,完全异步且无阻塞,并 通过Reactor项目实现Reactive Streams规范。
Spring WebFlux有两种版本:基于功能和注释。基于注释的注释非常接近Spring MVC模型,如以下示例所示:
@RestController
@RequestMapping("/users")
public class MyRestController {
@GetMapping("/{user}")
public Mono<User> getUser(@PathVariable Long user) {
// ...
}
@GetMapping("/{user}/customers")
public Flux<Customer> getUserCustomers(@PathVariable Long user) {
// ...
}
@DeleteMapping("/{user}")
public Mono<User> deleteUser(@PathVariable Long user) {
// ...
}
}
“WebFlux.fn”是功能变体,它将路由配置与请求的实际处理分开,如以下示例所示:
@Configuration
public class RoutingConfiguration {
@Bean
public RouterFunction<ServerResponse> monoRouterFunction(UserHandler userHandler) {
return route(GET("/{user}").and(accept(APPLICATION_JSON)), userHandler::getUser)
.andRoute(GET("/{user}/customers").and(accept(APPLICATION_JSON)), userHandler::getUserCustomers)
.andRoute(DELETE("/{user}").and(accept(APPLICATION_JSON)), userHandler::deleteUser);
}
}
@Component
public class UserHandler {
public Mono<ServerResponse> getUser(ServerRequest request) {
// ...
}
public Mono<ServerResponse> getUserCustomers(ServerRequest request) {
// ...
}
public Mono<ServerResponse> deleteUser(ServerRequest request) {
// ...
}
}
【Tip】如果你再pom中同时引用了spring-boot-starter-web和 spring-boot-starter-webflux的话,优先会使用spring-boot-starter-web。
1.2 Webflux 静态资源
默认情况下,Spring

本文介绍了Spring WebFlux,Spring Framework 5.0引入的反应式Web框架,它不需要Servlet API,支持静态资源、模板配置,并提供了统一错误处理和自定义错误页面的能力。通过WebFilter接口实现HTTP请求过滤。文章还提供了一个从创建Maven项目到运行WebFlux应用的完整示例,包括User实体、服务、处理器和路由的创建,以及模拟内存数据库。
最低0.47元/天 解锁文章
1378

被折叠的 条评论
为什么被折叠?



