Spring5框架新功能

109 阅读3分钟
  1. 整合日志框架
    • Spring5.0框架自带了通用的日志封装
      • Spring5已经移除Log4jConfigListener,官方建议用Log4j2
      • Spring5框架整合Log4j2
  2. 支持@Nullable注解
    • @Nullable注解可以使用在方法、属性、参数上,表示方法返回、属性值、参数值可以为空
  3. 支持函数式风格GenericApplicationContext
  4. 整合JUnit5单元测试框架
    • 引入JNnit5的jar包
    • 创建测试类,使用注解完成
  5. SpringWebFlux
    • 是什么
      • 是Spring5添加的新模块,用于web开发,功能与SpringMVC类似
      • 一种异步非阻塞的框架
        • 异步非阻塞
          • 是什么:
            • 异步:调用者发送请求后,不等着对方回应就去做别的事情
            • 非阻塞:被调用者收到请求后马上给出反馈然后再去做事情
          • 支持情况:Servlet3.1以后才支持
    • 特点
      • 非阻塞式:在有限资源下,提高系统吞吐量和伸缩性,以Reactor为基础实现响应式编程
        • Reactor:一个满足Reactive的规范框架
          • 两个核心类:
            • 作用:
              • 实现接口Publisher,提供丰富操作符
            • 种类:
              • Mono:返回0/1个元素
              • Flux:返回N个元素
            • 特点:
              • 都是数据流的发布者
                • 数据流
                  • 调用just或其他方法只是声明了数据流,数据流并没有发出,只有订阅后才会触发数据流,不订阅什么都不发生
              • 都能发出三种数据信号:
                • 有哪些:
                  • 元素值
                  • 错误信号、完成信号
                    • 都代表终止信号
                      • 终止信号:用于告诉订阅者数据流结束了
                      • 错误信号:终止数据流同时把错误信息传递给订阅者
                • 三种信号特点
                  • 错误信号、完成信号都是终止信号,不能共存
                  • 如果没发送任何元素值,而是直接发送错误或完成信号,表示为空数据流
                  • 如果没错误信号表示无限数据流
      • 函数式编程:使用Java8函数式编程方式实现路由请求
        • SpringWebflux实现这种编程的两个接口
          • RouterFunction(路由处理)
          • HandlerFunction(处理函数)
    • 实现响应式编程
      • 一种面向数据流和变化传播的编程范式
      • 用Reactor实现
      • 操作符
        • 是什么
          • 对数据流进行一道道操作,称为操作符
            • 操作
              • map元素映射为新元素
              • flatMap元素映射为流
                • 把每个元素转换为流,把转换之后多个流合并成大的流
    • 执行流程和核心API
      • SpringWebflux基于Reactor,默认使用容器为Netty(一个高性能的NIO框架)
      • SpringWebflux执行过程和SpringMVC相似
      • SpringWebflux里面DispatcherHandler,负责请求的处理
        • HandlerMapping:请求查询到处理的方法
        • HandlerAdapter:真正负责请求处理
        • HandlerResultHandler:响应结果处理
    • 操作
      • 基于注解编程模型
        • 将相关依赖配置到项目中,SpringBoot自动配置相关运行容器,默认情况下使用Netty服务器
      • 基于函数式编程模型
        • 特点:
          • 需要自己初始化服务器
          • SpringWebflux请求和响应不再是ServletRequest和ServletResponse,而是ServerRequest和ServerResponse
        • 两个核心接口
          • RouterFunction:实现路由转发,请求转发给对应的handler
          • HandlerFunction:处理请求生成相应的函数
        • 具体操作
          • 把注解编程模型工程复制一份
          • 创建Handler
          • 初始化服务器,编写Router