核心特性

访问Resource时提供getFile或isFile防御式抽象
有效的方法参数访问基于java8反射增强
在spring核心接口中增加了声明default方法的支持一贯使用jdk7, charset和standardcharset的增强
兼容jdk9
自带了通用的日志封装
(1) 已经移除了log4jConfigListener,官方建议使用log4j2
(2) Spring5框架整合了log4j
(3) 第一步引入jar包
Sprng5新特性
(4) 第二部创建log4j2.xml配置文件
Sprng5新特性
(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新特性

4. 测试方面的改进

Sprng5新特性

5. Spring5支持整合Junit5

(1) 整合Junit4
第一步引入依赖
Sprng5新特性
(2) 第二步创建测试类,使用注解方式完成

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

使用一个注解替代上面两个注解完成整合
Sprng5新特性

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新特性
(1)两个框架都可以使用注解方式,都运行在tomact等容器
(2)SpringMVC命令式编程,WebFlux采用异步响应式编程
Sprng5新特性
Sprng5新特性
响应式编程
(1) 什么是响应式编程,
响应式编程是一种面向数据流和变化传播的编程范式,这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播

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

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

Sprng5新特性

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

SpringwebFlux(基于注解编程模型)

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

第二步启动端口号
Sprng5新特性

第三步创建包和相关的类

Sprng5新特性

创建接口定义操作的方法

Sprng5新特性
编写接口实现类Sprng5新特性
Sprng5新特性
创建controllerSprng5新特性
Sprng5新特性
说明:
springMVC方式实现,同步阻塞的方式
SpringWebflux方式实现,异步非阻塞方式,基于springWebflux+Reactor+Netty

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

Sprng5新特性
Sprng5新特性
创建服务器完成适配

Sprng5新特性
最终调用Sprng5新特性
(5) 使用webclient进行调用Sprng5新特性
Sprng5新特性

总结

  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使用

相关文章:

  • 2021-07-10
  • 2021-05-25
  • 2021-08-28
  • 2022-02-19
  • 2022-12-23
  • 2021-12-15
  • 2021-11-12
猜你喜欢
  • 2021-10-05
  • 2021-07-07
  • 2021-10-26
  • 2021-05-25
  • 2022-12-23
  • 2021-12-20
  • 2021-09-14
相关资源
相似解决方案