写点什么

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:075743

评论

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

软件测试 | 奇安信秋招面试题3

测吧(北京)科技有限公司

测试

英特尔研究院副总裁、英特尔中国研究院院长宋继强:英特尔技术为全行业带来卓越贡献

E科讯

未来PC将是云电脑? 算力优势成为关键

青椒云云电脑

云电脑

极光笔记 | 聊一聊推送系统中事件驱动架构的应用

极光JIGUANG

雨天出行也安心!用华为天气一眼便知未来雨势

最新动态

开始报名!龙蜥社区走进 Arm MeetUp 议程硬核剧透来了

OpenAnolis小助手

开源 操作系统 arm Meetup 龙蜥社区

大厂旗下的APP们成为自研大模型的“磨刀石”|TE洞察

TE智库

人工智能 BAT 大模型

2023英特尔on技术创新大会:英特尔研究院展示多项技术“魔法”

E科讯

【架构篇】Supabase的Postgrest组件架构介绍

张文平

数据库 postgresql 缓存 多表联查 Postgrest

人工智能 | ChatGPT账号注册

测吧(北京)科技有限公司

测试

软件测试 | 奇安信秋招面试题2

测吧(北京)科技有限公司

测试

Vue3中的Ref与Reactive:深入理解响应式编程

互联网工科生

前端框架 Vue 3

真香!为什么设计行业流行部署云桌面?

青椒云云电脑

云桌面

文心一言 VS 讯飞星火 VS chatgpt (101)-- 算法导论9.3 7题

福大大架构师每日一题

福大大架构师每日一题

AI带来的新创浪潮

测吧(北京)科技有限公司

测试

软件测试 | 奇安信秋招面试题1

测吧(北京)科技有限公司

测试

深度学习之“线下标注”

矩视智能

深度学习 机器视觉

2024成都电子展|成都国际电子信息展览会

AIOTE智博会

电子信息展 成都电子展 电子信息博览会

流量治理的基石——基于字节码增强的全链路流量标签透传

华为云开源

微服务 微服务架构 字节码

AI在生活中的惊人应用

测吧(北京)科技有限公司

测试

定义现代化实时数据仓库,SelectDB 全新产品形态全面发布

SelectDB

数据库 大数据 数据湖 数据分析 云数据库

代理价格监控和分布式价格监控有什么不同点?

巨量HTTP

http代理 分布式代理

RTC才是物联网企业的杀手锏!

X2Rtc

音视频 物联网 IoT RTC

你眼中的程序员 vs 程序员眼中的自己,是时候打破刻板印象了丨KubeCon 主题活动

阿里巴巴云原生

阿里云 容器 云原生 AIGC

【聚梦想 创非凡】2023荣耀开发者沙龙 ● 广州站 精彩回顾

荣耀开发者服务平台

互联网 用户增长 云服务 生态合作 行业经验

混合项目管理:您需要知道的一切,从定义到实践

爱吃小舅的鱼

项目管理 看板 敏捷管理 混合项目管理

人工智能:走向智能化生活

测吧(北京)科技有限公司

测试

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