深入浅出spring boot 2.x 08-spring5新框架 webFlux【笔记】
2019-02-21 16:17
1036 查看
spring5新框架 webFlux
- 响应式的Web框架,springboot2才开始支持
- 需要了解RxJava和Reactor,Reactor是webFlux默认的实现方式
首先了解响应式编程
响应式编程是一种面向数据流和变化传播的编程范式
响应式宣言:
- 快速响应:尽可能块的响应
- 可恢复:强大的容错和修复机制
- 可伸缩:根据自身压力变化,释放或扩展服务器的能力
- 响应式编程的三层
- router functions:路由分发,根据请求的事件,分发到具体类具体方法
- spring webFlux:控制层,处理业务逻辑前进行的封装和控制数据流返回格式等。
- http/Reactive streams:将结果转换为数据流的过程
spring webFlux两种开发方式
- 类似springMVC模式,主要,因为通用
- 函数功能性编程
Reactor模式
Reactor封装数据流的类
-
Flux:存放0-n个数据流序列,一个一个发送给客户端
-
Mono:存放0-1个数据流序列
Flux与Mono可以互相转换 -
背压
如果服务器短时间内大量数据流给客户端,客户端可能被压垮,为此可采用响应式拉取,服务器一次发送给客户端一个数据流,客户端处理完这个序列后,服务器再发送… -
springMVC使用DispatcherServlet,webFlux使用WebHandler,类似以上
-
wenFlux持久层接口使用ReactiveMongoRepository
例:
Flux findUsers( )0-N个数据流序列
Mono 0-1个数据流序列
客户端端调用WebClient
- WebClient比restTemplate更强大,restTemplate使用在微服务间的互相调用
- 错误的处理可以使用实现webFluxConfigurer接口 类型转换器Converter,也是实现webFluxConfigurer接口,覆盖addFormatters,将自定义的转换器加入进来
实现Validator覆盖supports和validate,之后
-
全局控制器也是实现webFluxConfigurer接口,覆盖getValidator方法。将验证器加入进去。启用验证器@Valid,如@Valid @RequestBody User u
-
局部验证器@initbinder public void initbinder(DateBinder Binder){
Binder.setValidator(new UserValidator())};
webFluxConfigurer接口还有很多功能
如配置视图解析器,还有访问资源(addResourceHandlers)等,为了区分静态资源,也可以通过spring.webFlux.Static-Path-pattern=/static/**
相关文章推荐
- springboot 2.0中webflux使用netty作为http服务器的坑
- 详解spring boot Websocket使用笔记
- 深入浅出,了解 Spring 框架和 Spring Boot 的历史
- Spring Boot WebFlux 上手教程
- 解决spring-boot2.0.6中webflux无法获得请求IP的问题
- Spring-boot web 工程构建,并把maven子项目模块依赖jar打包,笔记
- spring5.0 函数式web框架 webflux
- 爬虫框架webmagic与spring boot的结合使用
- IDEA搭建Spring Boot框架再web页面进行输出!
- Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)
- [ Spring Boot ] 整合 Websocket 实现消息推送框架的设计笔记
- 我的第一个整合elasticsearch\web的基于springboot框架的页面 7ff0
- Spring Boot 学习笔记 - 认识Spring Boot框架
- Spring Boot 学习笔记【6】使用FreeMarker与BootStrap开发Web
- 【Spring5】使用 Spring Webflux 开发 Reactive 应用
- 尝试Spring Boot2 WebFlux(启动失败了?不要怕)
- java鬼混笔记:springboot 3、springboot创建web项目和打包
- 爬虫框架webmagic与spring boot的结合使用
- 初始Spring Boot框架笔记整理(一)
- Spring boot 学习笔记 ---分分钟构建一个web程序(一)