写点什么

Spring 5.0 GA 版本发布,支持 JDK9 及反应式编程

  • 2017-09-29
  • 本文字数:1898 字

    阅读完需:约 6 分钟

Spring Framework 5.0 耗时两年,终于在 9 月 28 日通过 Spring官方博客撰文宣告发布第一个GA 版本。期间经历1 年多的里程碑版本和数个RC 版本,现在 5.0.0.RELEASE 已正式发布到了repo.spring.io 和Maven 中央仓库,开发者可以通过Maven 或Gradle 快速获取和体验:

Maven:

复制代码
<pre data-anchor-id="im63">
org.springframework spring-context 5.0.0.RELEASE
复制代码

Gradle:

复制代码
<pre data-anchor-id="oo65">

dependencies {
compile ‘org.springframework:spring-context:5.0.0.RELEASE’
}

复制代码

快速了解 5.0

新特性简介

  • 要求 JDK 8+ 和 Java EE 7+
    整个框架的代码库基于 Java 8 源码级别,通过泛型推断和 lambda 等提升了可读性。全面兼容 JDK9,同时支持类路径 classpath 和模块路径 module path;整个框架在 JDK 9 上编译和执行测试用例,默认依然使用 JDK 8。支持 JavaEE 7 API,包括 Servlet 3.1、Bean Validation 1.1、JPA 2.1 和 JMS 2.0,以及最新的容器和服务器 Tomcat 8.5+、 Jetty 9.4+、 WildFly 10+ 等。在运行时兼容 Java EE 8 API,包括 Servlet 4.0、 Bean Validation 2.0、 JPA 2.2 和 JSON Binding API 1.0,并在 Tomcat 9.0、 Hibernate Validator 6.0 和 Apache Johnzon 1.1 测试通过。
  • 移除了的包、类和方法
    移除了包 beans.factory.access、jdbc.support.nativejdbc、spring-aspects 模块中的 mock.staticmock、web.view.tiles2 以及 orm.hibernate3/hibernate4。不再支持 Portlet、Velocity、JasperReports、XMLBeans、JDO 和 Guava。
  • 常规核心修订
    包括针对 JDK 8+ 的增强和对 JDK 9 的兼容,包级别的非空 API 声明。5.0 现在有了自己的 Commons Logging 桥接,会自动探测 Log4j 2.x、SLF4J 及 JUL (java.util.logging),不再需要外部的桥接程序。spring-core 自带 ASM6.0(同时还包括 CGLIB 3.2.5 和 Objenesis 2.6)。
  • 核心容器
    支持 @Nullable 注解作为可选注入点声明;函数式 GenericApplicationContext/AnnotationConfigApplicationContext;接口方法上的事务、缓存和异步注解一致性探测。
  • Spring Web MVC
    通过 Spring 自带的 Filter 实现全面支持 Servlet 3.1;controller 方法中支持 Servlet 4.0 的 PushBuilder 参数;针对 Servlet 3.0 multipart 解析时增加 MaxUploadSizeExceededException 类型异常;不可变对象的数据绑定支持(Kotlin / Lombok / @ConstructorProperties);支持 JSON 绑定 API(Jackson 和 GSON 的替代方案),支持 Jackson 2.9 和 Protubuf 3;支持 Reactor 3.1;Flux、Mono 以及 RxJava 3.1 和 2.1 都可以作为 controller 方法的返回值,以便适应新的反应式 WebClient 或者 Spring Data Reactive repositories;新的 ParsingPathMatcher 替代 AntPathMatcher,解析效率更高;@ExceptionHandler 方法支持 RedirectAttributes 参数。
  • Spring WebFlux
    这是一个全新的模块,作为 spring-webmvc 的替代方案,基于反应式基础构建——全面异步和非阻塞,它的目的是将其用于事件循环执行模型中,用来替代传统的每个请求对应一个线程的大规模线程池模型;spring-core 和 spring-web 中的反应式支持,比如各种编解码器等;@Controller 风格的基于注解的编程模块,与 Spring MVC 类似,只不过在 WebFlux 中运行,支持反应式技术栈;新的函数式编程模型(“WebFlux.fn”)也可以替代 @Controller,在路由 API 方面更加轻量和透明,运行在同样的反应式栈和 WebFlux 基础设施上;新的 WebClient,用于函数式和反应式的 HTTP API 调用。
  • Kotlin 支持
    在使用 Kotlin 1.1.50 以上版本时,支持 Null 安全的 API;使用 Kotlin DSL 的函数式 bean 定义。
  • 测试提升
    完整支持 JUnit 5 的 Jupitre 编程和 Spring TestContext Framework 的扩展模型;支持并行测试执行;新的 before 和 after 测试执行回调,包括 TestNG,JUnit 5 和使用 SpringRunner 的 JUnit 4(但不支持 JUnit 4 规则);MockHttpServletRequest 现在增加了 getContentAsByteArray() 和 getContentAsString() 方法来访问内容;Spring MVC Test 中的 print() 和 log() 方法能够打印 Mock 请求中的消息体,redirectedUrl() 和 forwardedUrl() 方法能够通过变量扩展支持 URI 模板;对 XMLUnit 的支持升级到了 2.3 版本。

参考链接

官方博客: https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga
项目主页: http://projects.spring.io/spring-framework/
源码获取: https://github.com/spring-projects/spring-framework/

感谢张卫滨对本文的审校。

2017-09-29 22:075751

评论

发布
暂无评论
发现更多内容

三面阿里,被Java面试官虐哭!现场还原真实的“被虐”场景

小二,上酒上酒

面试题 面经 大厂面试 春招

干货 | 带你了解 EMC—— 什么是 EMC?

元器件秋姐

电磁兼容 元器件电商 华秋商城 电子工程师 电子科普

Baklib帮助中心|如何设置好客户服务帮助您的客户?

Baklib

Baklib|如何做好知识库网页?

Baklib

java培训学习有什么好的方法

小谷哥

解读 K8s Pod 的 13 种异常

阿里巴巴云原生

阿里云 Kubernetes 云原生

敏捷开发四个会议如何正确召开?

PingCode研发中心

敏捷开发

OpenSergo & ShardingSphere 社区共建微服务视角的数据库治理标准

阿里巴巴云原生

阿里云 云原生 开源微服务 OpenSergo

传统客服中心向“互联网+”转型的关键点——帮助中心

Baklib

【CSPO认证】12月17-18日在线周末班 | 全国招生

ShineScrum捷行

产品负责人 CSPO认证 CSPO

python的标准库与扩展库中对象的导入与使用

乔乔

11月月更

前端培训机构需要注意什么?

小谷哥

WOS新商业操作系统:中国头部SaaS的一次进阶

ToB行业头条

视效剧情口碑双爆棚!Netflix 现象级剧集《怪奇物语》第四季神级视效专访大揭秘!

Renderbus瑞云渲染农场

Renderbus瑞云渲染 CG动画电影 CG特效制作

CentOS7安装MySQL-5.7.36

蜗牛也是牛

The camera application scenrios on Wallys DR40X9 ipq4019/ipq4029 industrial 5g router

wallysSK

IPQ4019 ipq4029

从发现问题到创造价值 数据智能如何助力商家双11高质量增长?

阿里技术

数据分析 智能数据

一文熟悉 Go 的基础语法和基本数据类型

陈明勇

Go golang 11月月更

存算一体 VS 存算分离 ,IT发展下的技术迭代

StoneDB

数据库 开源 存算分离 HTAP StoneDB

年薪120W的架构师简历你见过吗?java程序员该如何达到?

小二,上酒上酒

学习 架构 简历规划

C++特殊类的设计

可口也可樂

c++ 11月月更 特殊类的设计

母亲斗情敌,羞得儿子无地容!一瓶“醉三皇”,圆了多少孝亲梦!

联营汇聚

终于有阿里大牛把困扰我多年的计算机组成原理:网络通信讲明白了

小二,上酒上酒

计算机 计算机原理 TCP协议

支持向量机-线性SVM决策过程的可视化

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

荣耀MagicOS 7.0正式发布!打造以人为中心的智慧生活解决方案

荣耀开发者服务平台

手机 系统 安卓 荣耀 honor

完全解析分布式存储,带你了解HDFS的块

好程序员IT教育

hdfs 分布式

项目重构演进之路

杨充

寒冬之下,年销售增速不降反增,这家国企做对了什么?

用友BIP

前端培训程序员失业后就业方向有哪些

小谷哥

Gartner 2023 年十大技术趋势,资料汇总(官方PDF & 直播实况)

填空时光

Gartner Gartner预测 gartner电子书 咨询

终于学完阿里架构师推荐413页微服务分布式架构基础与实战笔记

小二,上酒上酒

Java 面试 分布式 微服务

Spring 5.0 GA版本发布,支持JDK9及反应式编程_Java_杨振涛_InfoQ精选文章