大部分Java程序员都不知道的Spring5新特性与增强

news/2024/7/10 18:38:45 标签: Java, 程序员, 架构, 互联网, Spring

Spring FrameWork 5.0新的功能

JDK 8+和Java EE7+以上版本

  • 整个框架的代码基于java8
  • 通过使用泛型等特性提高可读性
  • 对java8提高直接的代码支撑
  • 运行时兼容JDK9
  • Java EE 7API需要Spring相关的模块支持
  • 运行时兼容Java EE8 API
  • 取消的包,类和方法
  • 包 beans.factory.access
  • 包 dbc.support.nativejdbc
  • 从spring-aspects 模块移除了包mock.staicmock,不在提AnnotationDrivenStaticEntityMockingControl支持
  • 许多不建议使用的类和方法在代码库中删除

核心特性

JDK8的增强:

  • 访问Resuouce时提供getFile或和isFile防御式抽象
  • 有效的方法参数访问基于java 8反射增强
  • Spring核心接口中增加了声明default方法的支持一贯使用JDK7 Charset和StandardCharsets的增强
  • 兼容JDK9
  • Spring 5.0框架自带了通用的日志封装
  • 持续实例化via构造函数(修改了异常处理)
  • Spring 5.0框架自带了通用的日志封装
  • spring-jcl替代了通用的日志,仍然支持可重写
  • 自动检测log4j 2.x, SLF4J, JUL(java.util.Logging)而不是其他的支持
  • 访问Resuouce时提供getFile或和isFile防御式抽象
  • 基于NIO的readableChannel也提供了这个新特性

  • 关注我的VX号: Java架构师学习
    关注我:可免费领取架构师学习资料。 
    关注我:获得面试学习资料 
    关注我:学习架构最新技能知识 
    关注我:了解最新BAT招聘动态 
  • 关注回复"GIAC2017".获取GIAC2017互联网巅峰架构技术峰会PDF文件

核心容器

  • 支持候选组件索引(也可以支持环境变量扫描)
  • 支持@Nullable注解
  • 函数式风格GenericApplicationContext/AnnotationConfigApplicationContext
  • 基本支持bean API注册
  • 在接口层面使用CGLIB动态代理的时候,提供事物,缓存,异步注解检测
  • XML配置作用域流式
  • Spring WebMVC
  • 全部的Servlet 3.1 签名支持在Spring-provied Filter实现
  • Spring MVC Controller方法里支持Servlet4.0 PushBuilder参数
  • 多个不可变对象的数据绑定(Kotlin/Lombok/@ConstructorPorties)
  • 支持jackson2.9
  • 支持JSON绑定API
  • 支持protobuf3
  • 支持Reactor3.1 Flux和Mono

SpringWebFlux

  • 新的spring-webflux模块,一个基于reactive的spring-webmvc,完全的异步非阻塞,旨在使用enent-loop执行模型和传统的线程池模型。
  • Reactive说明在spring-core比如编码和解码
  • spring-core相关的基础设施,比如Encode 和Decoder可以用来编码和解码数据流;DataBuffer 可以使用java ByteBuffer或者Netty ByteBuf;ReactiveAdapterRegistry可以对相关的库提供传输层支持。
  • 在spring-web包里包含HttpMessageReade和HttpMessageWrite

测试方面的改进

  • 完成了对JUnit 5’s Juptier编程和拓展模块在Spring TestContext框架
  • SpringExtension:是JUnit多个可拓展API的一个实现,提供了对现存Spring TestContext Framework的支持,使用@ExtendWith(SpringExtension.class)注解引用。
  • @SpringJunitConfig:一个复合注解
  • @ExtendWith(SpringExtension.class) 来源于Junit Jupit
  • @ContextConfiguration 来源于Srping TestContext框架
  • @DisabledIf 如果提供的该属性值为true的表达或占位符,信号:注解的测试类或测试方法被禁用
  • Spring TestContext框架中支持并行测试
  • 具体细节查看Test 章节 通过SpringRunner在Sring TestContext框架中支持TestNG, Junit5,新的执行之前和之后测试回调。
  • 在testexecutionlistener API和testcontextmanager新beforetestexecution()和aftertestexecution()回调。MockHttpServletRequest新增了getContentAsByteArray()和getContentAsString()方法来访问请求体
  • 如果字符编码被设置为mock请求,在print()和log()方法中可以打印Spring MVC Test的redirectedUrl()和forwardedUrl()方法支持带变量表达式URL模板。
  • XMLUnit 升级到了2.3版本。

http://www.niftyadmin.cn/n/1360267.html

相关文章

突破瓶颈——十年Java架构师教你如何正确看待焦虑和迷茫

程序员一旦焦虑或者迷茫以后,就会对成就感的获得大大降低。长久这样就会导致动力不足。但是现实产生焦虑的原因经过前面的分析,也是客观存在的。那我们应该如何面对呢? 在技术的更迭变化过程中,如果一味的跟新技术,那你…

BZOJ3261最大异或和——主席树

题目描述 给定一个非负整数序列{a},初始长度为N。有M个操作,有以下两种操作类型:1、Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N1。2、Qlrx:询问操作,你需要找到一个位置p&a…

vue-cli目录结构介绍

原文地址:http://www.jianshu.com/p/7006a663fb9f 总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可。 文件结构细分 1.build——[webpack…

在阿里架构师眼中Dubbo的过去,现在以及未来

基本介绍Dubbo介绍Open sourced by alibaba at 2011Production-tested and proven AT ScaleA high performance RPC FrameworkBeyond RPC:Rich features for micro-services 当前情况1、社区活跃14kstarts11Kforks100issue&PR/每周 2、服务化基石阿里内部微服务支持生产环境…

洛谷P2761 软件补丁问题(状压dp)

传送门 啊咧……这题不是网络流二十四题么……为啥是个状压dp…… 把每一个漏洞看成一个状态&#xff0c;直接硬上状压dp 然后因为有后效型&#xff0c;得用spfa 1 //minamoto2 #include<iostream>3 #include<cstdio>4 #include<queue>5 #include<cstring…

为什么“他”能成为一名Java架构师?“我”只能当一名基层码农

成为架构师&#xff0c;需要经验和眼界 老码农分为两种&#xff1a;游击队和板凳王 坐穿板凳有利于积累经验&#xff0c;而不利于开拓眼界游遍四海有利于开拓眼界&#xff0c;而不利于积累经验 码农的生活是高压的&#xff0c;唯有热情可以驱使你一边吃着苹果&#xff0c;一边又…

树莓派使用 HLS 实现视频流直播

说明 这次介绍一下基于上一篇文章“树莓派编译安装 FFmpeg ”的应用&#xff0c;即 HLS 视频流直播。原理是 FFmpeg 将 USB 摄像头的原始视频流压缩为 H.264 视频流&#xff0c;然后使用 FFmpeg 的 hls 切片工具将视频流分为 n 个切片和 1 个 m3u8 文件&#xff0c;具体原理可以…

微服务架构要掌握的知识点都在这里

本文把微服务架构分为四大模块&#xff0c;围绕微服务的通用模式&#xff0c;集合微服务必须要掌握的知识点&#xff0c;使微服务的开发更加方便、快捷&#xff0c;让微服务应用更加稳定、可用。 微框架 与微服务之间的关系 热部署实战 核心组件&#xff1a;Starter、Actu…