一 webflux响应式编程
Spring WebFlux是随Spring 5推出的响应式Web框架。
1.服务端:Spring提供了完整的支持响应式的服务端技术栈,
左侧为基于spring-webmvc的技术栈,右侧为基于spring-webflux的技术栈。
Spring WebFlux是基于响应式流的,因此可以用来建立异步的、非阻塞的、事件驱动的服务。它采用Reactor作为首选的响应式流的实现库,不过也提供了对RxJava的支持。
从图的纵向上看,spring-webflux上层支持两种开发模式:
类似于Spring WebMVC的基于注解(@Controller、@RequestMapping)的开发模式;
Java 8 lambda 风格的函数式开发模式。
Spring WebFlux也支持响应式的Websocket服务端开发。
总结: 整个技术栈从命令式的、同步阻塞的【spring-webmvc + servlet + Tomcat】变成了响应式的、异步非阻塞的【spring-webflux + Reactor + Netty】。
2.客户端
Spring WebFlux也提供了一个响应式的Http客户端API WebClient
。它可以用函数式的方式异步非阻塞地发起Http请求并处理响应。其底层也是由Netty提供的异步支持。