Sprng5新特性

核心特性

访问Resource时提供getFile或isFile防御式抽象
有效的方法参数访问基于java8反射增强
在spring核心接口中增加了声明default方法的支持一贯使用jdk7, charset和standardcharset的增强
兼容jdk9
自带了通用的日志封装
(1) 已经移除了log4jConfigListener,官方建议使用log4j2
(2) Spring5框架整合了log4j
(3) 第一步引入jar包
Sprng5新特性_第1张图片
(4) 第二部创建log4j2.xml配置文件
Sprng5新特性_第2张图片
(5)持续实例化via构造函数(修改了异常处理)
Spring-jcl替代了通用的日志,俨然可以支持重写
自动检测log4j2.x,SLF4J,JUL(java.util.logging)而不是其他的支持
访问Resource时提供getFile或isFile防御式抽象,
基于NIO的readableChannel也提供了这个新特性

1. 核心容器

支持候选组件(也可以支持环境扫描)
支持@Nullable注解
函数式风格GenericApplicationContext/AnnotationConfigApplicationContext
基本支持beanAPI注册
在接口层面使用CGLIB动态代理的时候,提供事务,提供事务,缓存,异步注解检测
Xml配置作用域流
Spring webMVC
全部的Servlet3.1签名支持Spring-proviedFillter实现
在SpringMVCController方法里支持Servlet4.0PushBuilder参数
多个不可变对象的数据绑定(Kotlin/Lombok/@ConstrutorPorties)
支持jackson2.9
支持JSON绑定API
支持protobu3
支持Reactor3.1 Flux和Mono

2. Spring容器框架核心容器支持@Nullable注解

(1)@Nullable注解可以使用在方法上面,属性上面,表示方法返回可以为空,属性值可以为空,参数值可以为空,
(2)注解用在方法上面,方法返回值可以为空
(3)注解使用在方法参数里面,方法参数可以为空,
(4)注解使用在属性上面,属性值可以为空

3. Spring5核心容器支持函数式风格GenericApplicationContext

函数式风格创建对象,交给spring管理,

Sprng5新特性_第3张图片

4. 测试方面的改进

Sprng5新特性_第4张图片

5. Spring5支持整合Junit5

(1) 整合Junit4
第一步引入依赖
在这里插入图片描述
(2) 第二步创建测试类,使用注解方式完成

Sprng5新特性_第5张图片
(3) Spring5整合Junit5
第一步引入junit的jar包
Sprng5新特性_第6张图片
(4) 创建测试类,使用注解完成
Sprng5新特性_第7张图片

使用一个注解替代上面两个注解完成整合
Sprng5新特性_第8张图片

6. SpringWebFlux

  1. SpringWebFlux介绍
    是Spring5添加新的模块,用于web开发,功能SpringMVC类似的,WebFlux使用当前一种比较流行响应式编程出现的框架,
  2. 使用传统web框架,比如,S毗邻MVC,这些基于Servlet容器,webFlux是一种异步非阻塞的框架,异步非阻塞的框架在Servlet3.1以后支持,核心是基于Reactor的相关API实现的
  3. 解释什么是异步非阻塞
    异步同步
    非阻塞和阻塞
    上面都是针对对象不一样
    异步和同步针对调用者
    调用者发送请求,如果等着对方回应之后去做其他的事情就是同步,如果发送请求之后不等待着对方回应就去做其他的事情就是异步

阻塞和非阻塞针对被调用者,被调用者收到请求之后,做完任务之后给出反馈就是阻塞,收到请求之后马上给出反馈然后再去做其他事情就是非阻塞

(4)WebFlux
第一步非阻塞式:可以再有限资源下,提高系统吞吐量和伸缩性,一Refactor实现响应式编程
第二函数式编程: Spring5框架基于java8,webflux使用java8函数式编程方式实现路由请求
比较springMVC
Sprng5新特性_第9张图片
(1)两个框架都可以使用注解方式,都运行在tomact等容器
(2)SpringMVC命令式编程,WebFlux采用异步响应式编程
Sprng5新特性_第10张图片
Sprng5新特性_第11张图片
响应式编程
(1) 什么是响应式编程,
响应式编程是一种面向数据流和变化传播的编程范式,这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播

(2) Java8及其之前版本
提供观察者模式两个类Observer和Observable
Sprng5新特性_第12张图片
响应式编程(Refactor实现)
(1) 响应式编程操作中,refactor是满足Reactive规范框架
(2) Reactor有两个核心类,Mono和flux,这两个类实现接口Publisher,提供丰富操作符,Flux对象,实现发布者,返回N个元素,Mono实现发布者,返回0或者1个元素
(3) Flux和Mono都是数据流的发布者,使用flux和Mono都可以发出三种数据信号,元素值,错误信号,完成信号,都代表终止信号, 终止信号用于告诉订阅者数据流结束了,错误信号终止数据流同时把错误信息传递给订阅者
Sprng5新特性_第13张图片
(4) 代码演示Flux和Mono
Sprng5新特性_第14张图片
(5) 三种信号特点
错误信号和完成信号都是终止信号,不能共存的,如果没有发送任何元素值,而是直接发送错误或者完成信号,表示是空数据流,
如果没有错误信号,没有完成信号,表示是无线数据流,
(6) 调用just或者其他方法只是声明数据流,数据流并没有发出,只有进行订阅之后才会触发数据流,不订阅声明都不会发生的
Sprng5新特性_第15张图片
(7) 操作符
对数据流进行一道道操作,成为操作符,比如工厂流水线
(1) map元素映射为新元素
Sprng5新特性_第16张图片
(2) flatMap元素映射为流

把每个元素转换为流,把转换之后多个流合并大的流

Sprng5新特性_第17张图片

webFlux执行流程和核心api
SpringWebFlux基于Reactor,默认使用容器是Netty,Netty是高性能的NIO框架,异步非阻塞的框架,
(1) Netty
BIO
Sprng5新特性_第18张图片
NIO
Sprng5新特性_第19张图片
(2) SpringWebFlux执行过程和SpringMVC相似的,
SpringWebFlux核心控制器DispatchHandler,实现接口,
Sprng5新特性_第20张图片
(3) SpringWebFlux里面DispatcherHandler,负责请求的处理
HandlerMapping请求查询到处理的方法
HandlerAdapter真正负责请求处理
HandlerResultHandler响应结果处理
(4) SpringWebFlux实现函数式编程,两个接口:RouterFunction(路由处理)和HandlerFunction(处理函数)

SpringwebFlux(基于注解编程模型)

SpringWebFlux实现方式有两种,注解编程模型和函数式编程模型
使用注解编程模型方式,和之前SpringMVC使用相似的,只需要把相关依赖配置到项目中,SpringBoot自动配置相关运行容器,默认情况下使用Netty服务器
第一步创建SpringBoot工程,引入webFlux依赖
Sprng5新特性_第21张图片

第二步启动端口号
在这里插入图片描述

第三步创建包和相关的类

Sprng5新特性_第22张图片

创建接口定义操作的方法

Sprng5新特性_第23张图片
编写接口实现类Sprng5新特性_第24张图片
Sprng5新特性_第25张图片
创建controllerSprng5新特性_第26张图片
Sprng5新特性_第27张图片
说明:
springMVC方式实现,同步阻塞的方式
SpringWebflux方式实现,异步非阻塞方式,基于springWebflux+Reactor+Netty

SpringwebFlux(基于函数式编程模型)
(1) 在使用函数式编程模型操作时,需要自己初始化服务器
(2) 基于函数式编程模型时候,有两个核心接口,RouterFunction(实现路由功能,请求转发给对应的handler)和HandlerFunction(处理请求生成响应的函数),核心任务定义两个函数式接口的实现并且启动需要的服务器
(3) SpringWebFlux请求和响应不再是ServletRequest和ServletResponse,而是ServerRequest和ServerResponse
第一步把注解编程模型工程复制
第二步创建handler(具体实现方法)
Sprng5新特性_第28张图片
Sprng5新特性_第29张图片
Sprng5新特性_第30张图片
第三步初始化服务器,编写Router

Sprng5新特性_第31张图片
Sprng5新特性_第32张图片
创建服务器完成适配

Sprng5新特性_第33张图片
最终调用Sprng5新特性_第34张图片
(5) 使用webclient进行调用Sprng5新特性_第35张图片
Sprng5新特性_第36张图片

总结

  1. Spring概述
    (1) 轻量级javaEE框架,为了解决企业复杂性,两个核心组成IOC和AOP
    (2) Spring5.2.6版本
    (3) IOC容器
    (4) IOC底层原理(工厂,反射)
    (5) IOC操作Bean管理(基于xml)
    (6) IOC操作Bean管理(基于注解)
    (7) AOP
    AOP底层原理,动态代理,接口(动态代理),没有接口(CGLIB动态代理)
    术语:切入点,增强(通知),切面
    基于AspectJ实现AOP操作

JdbcTemplate
(1) 使用jdbcTemplate实现数据库curd操作
(2) 使用jdbcTemplate实现数据库批量curd操作

事务管理
(1) 事务概念
(2) 重要概念(传播行为和隔离级别)
(3) 基于注解实现声明式事务管理
(4) 完全注解方式实现声明式事务管理-
Spring5新特性
整合日志框架
@Nullable注解
函数式注册对象
整合Junit5单元测试框架
SpringWebFlux使用

你可能感兴趣的:(Spring5框架)