深入浅出spring boot 2.x 08-spring5新框架 webFlux【笔记】

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

实现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/**

你可能感兴趣的:(深入浅出spring,boot,2.x【书】)