概要
在SpringMvc框架下,http的请求是同步的,在某些场景下为了提供性能,可以采用异步的方式来进行优化。WebFlux便是提供了异步的技术栈
响应式编程(reactive programming)是一种基于数据流(data stream)和变化传递(propagation of change)的声明式(declarative)的编程范式
WebFlux经常会跟响应式编程挂钩,其实其只不过是响应式编程中的一部分技术,代表的是web控制端实现异步从而实现状态变化流转。
入门WebFlux
WebFlux使用的响应式流是一个叫做Reactor响应式流库
。所以,入门WebFlux其实更多是了解怎么使用Reactor的API,下面我们来看看~
Reactor是一个响应式流,它也有对应的发布者(Publisher ),Reactor的发布者用两个类来表示:
- Mono(返回0或1个元素)
- Flux(返回0-n个元素)
而订阅者则是Spring框架去完成
下面我们来看一个简单的例子(基于WebFlux环境构建):
@EnableDiscoveryClient
@SpringBootApplication
public class WebFluxClient {
public static void main( String[] args )
{
SpringApplication.run(WebFluxClient.class, args);
}
}
@RestController
@RequestMapping("/WebFluxClient")
public class WebFluxClientController {
@Autowired
WebFluxClientService service;
@GetMapping("/{id}")
public Mono<String> getById(@PathVariable long id) {
r