Spring WebFlux 是 Spring Framework 5.0 中新引入的一个响应式 Web 框架。与 Spring MVC 不同,它不需要 Servlet API,完全异步且无阻塞,并通过 Reactor 项目实现响应式流(Reactive Streams)规范。
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
Spring WebFlux 有两个版本:函数式和基于注解。
基于注解的方式非常接近 Spring MVC 模型:
@RestController
public class HelloController {
@GetMapping("/hello")
public Mono<String> hello() {
return Mono.just("Welcome to reactive world ~");
}
}
在应用程序中同时添加 spring-boot-starter-web
和 spring-boot-starter-webflux
模块会导致 Spring Boot 自动配置 Spring MVC,而不是使用 WebFlux。这样做的原因是因为许多 Spring 开发人员将 spring-boot-starter-webflux
添加到他们的 Spring MVC 应用程序中只是为了使用响应式 WebClient。 您仍然可以通过设置 SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE)
来强制执行您选择的应用程序类型。