Spring Webflux
Reactor核心:HttpHandle原生API
DispatcherHandler原理:
WebFlux:底层完全基于netty+reactor+springweb完成一个全异步非阻塞的web响应式框架
底层:异步 + 消息队列(内存) + 事件回调机制 = 整套系统
优点:能使用少量资源处理大量请求
Mono:返回0|1数据流
Flux:返回N数据流
1、WebFlux
底层基于Netty实现的Web容器与请求/响应处理机制,详情可看官网
(1)、引入(导入依赖)
以前:浏览器–>Controller–>Service–>Dao:阻塞式编程
现在:Dao(数据源查询对象)–>Service–>Controller–>浏览器:响应式
(2)、最原生的方式
// 快速编写一个能处理请求的服务器
// 1、创建一个能处理Http请求的处理器
HttpHandler handler = (ServerHttpRequest request,
ServerHttpRespnse response)->{
System.out.prinln("请求进来" + request.getURI());
//编写请求处理的业务,给浏览器编写一个内容URL
// return Mono.empty();
}
// 2、启动一个服务器,监听8080端口,接受数据,拿到数据交给 HttpHandler 进行请求处理
ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler);
// 3、启动netty服务器
HttpServer.create()
.host("localhost")
.port(8080)
.handler(adapter) //用指定的处理器处理请求
.bindNow(); //现在就绑定
System.out.println("服务器启动完成...监听8080,接受请求");
System.in.read();
System.out.println("服务器停止...");
(3)、DispatcherHandler
webFlux:向下兼容原来SpringMVC的大多数注解和API
SpringMVC 以前怎么用,基本可以无缝切换
底层:需要自己编写响应式编码
注解开发
1、目标开发传参
Controller | Description |
---|---|
ServerWebExchange | 封装了请求和响应对象的对象;自定义获取数据、自定义响应 |
ServerHttpRequest、ServerHttpResponse | 请求、响应 |
WebSession | 访问Session对象 |
org.spring.framework.http.HttpMethod | 请求方式 |
@PathVariable | 路径变量 |
@MatrixVariable | 矩阵变量 |
@RequesParam | 请求参数 |
@RequestHeader | 请求头 |
@CookieValue | 获取Cookie |
@RequestBody | 获取请求体、Post、文件上传 |
HttpEntity<> | 封装后的请求对象 |
… | … |
Rendering 新版的页面跳转API,不能标注@ResponseBody注解