QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

评论

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

架构师训练营第 1 期 第 4 周作业

李循律

极客大学架构师训练营

低代码开发平台,来自“未来”的软件开发方案

Marilyn

敏捷开发

TensorFlow 篇 | TensorFlow 2.x 基于 Keras 的模型保存及重建

Alex

tensorflow keras model save model restore tensorflow hub

阿里面试官纯手打:金九银十跳槽必会Java核心知识点笔记整理

Java架构追梦

Java 数据库 架构 面试 微服务

Go发起HTTP2.0请求流程分析(前篇)

Gopher指北

HTTP HTTP2.0 Go 语言

Vidyo的解决方案到底是什么?有哪些特点?

dwqcmo

音视频 集成架构 解决方案 智能硬件

摆脱复杂烧脑的程序代码,利用快速开发平台轻轻松松做软件

Marilyn

敏捷开发 快速开发

GitHub 上开源了一个很邪恶的项目!女生勿近,18香警告...

程序员生活志

XJR企业级软件快速开发平台规范

Marilyn

程序员 敏捷开发 软件设计

标本兼治,程序员用它整体提升公司效率

Marilyn

敏捷开发 快速开发

MySQL-技术专题-性能优化—索引篇

洛神灬殇

Redis Sharding集群跟一致性哈希有什么瓜葛?

Man

一致性哈希 Jedis redis cluster

Go语言内存管理三部曲(一)内存分配原理

网管

内存管理 内存布局 Go 语言

JVM-技术专题-深入理解内存结构

洛神灬殇

Java JVM

商业智能(Business Intelligence)系统的使用及设计原则

Marilyn

敏捷开发 快速开发 商业智能

JAVA代码生成器,快速开发平台之魂

Marilyn

Java 敏捷开发 快速开发 开发工具

spring-boot-route(十三)整合RabbitMQ

Java旅途

Java Spring Boot RabbitMQ

大企内部软件系统反复故障难以解决,业内人士:唯有彻底更换

Marilyn

敏捷开发 快速开发 开发工具

为什么巨头都在布局SaaS生态?

ToB行业头条

SASS

智能时代,快速开发平台将成为主流软件开发工具

Marilyn

敏捷开发

JAVA & VUE ,分离式开发平台建造思路

Marilyn

Java Vue 敏捷开发

深入分析软件快速开发平台与传统软件开发方案的优缺点

Marilyn

敏捷开发

用友政务表格技术应用开发实践:预算一体化产品核心功能搭建

葡萄城技术团队

SpreadJS 用友

快速开发平台,程序员“老师傅”必备

Marilyn

敏捷开发 快速开发 开发工具

架构师训练营 1 期第 4 周:系统架构 - 作业

piercebn

极客大学架构师训练营

阿里内部《Java架构进阶宝典》,总结了基础、进阶、架构三个阶段的知识点

Java架构之路

Java 程序员 面试 算法 编程语言

企业开发遇到瓶颈,何不换个新思路?快速开发了解一下

Marilyn

敏捷开发 快速开发

快速开发平台,高集成易扩展,进入软件疾速开发新世代

Marilyn

敏捷开发 快速开发 开发工具

有一说一,大型信息化企业的软件系统,还是用自研的好

Marilyn

敏捷开发 快速开发 开发工具 软件设计

五年Java开发经验,4面阿里成功拿下offer,分享一下个人面经!

Java架构之路

Java 程序员 面试 算法 编程语言

医院HIS故障,险引发人命关天大危机,竟被程序员轻松解决!

Marilyn

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