生成式AI领域的最新成果都在这里!抢 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:075634

评论

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

生成式语言大模型的工程实践

百度开发者中心

自然语言处理 大模型 生成式AI

Wireshark的数据包

小齐写代码

Sketchpad几何画板 for Mac v5.06完美激活版

mac

苹果mac Windows软件 Sketchpad 几何画板 几何教学工具

Vector Magic for mac(矢量图片转换工具) 1.2.0激活破解版

mac

苹果mac Windows软件 Vector Magic 图片转换矢量图软件

Git客户端工具 SourceTree中文最新安装包

mac大玩家j

git Mac软件 Git客户端

一起学Elasticsearch系列-分词器

Java随想录

Java 大数据 Elast Elastic Search

营销数智化解析第7期:用友BIP | CRM 渠道工作台、伙伴管理

用友BIP

营销数智化

3D数字孪生场景编辑器

3D建模设计

数字孪生 低代码平台 3d建模 3D场景编辑器 3D场景应用

预训练大模型的演变与突破

百度开发者中心

大模型 #人工智能 ChatGPT

Linux如何使用Nano编辑器教程。

百度搜索:蓝易云

云计算 Linux 运维 云服务器 Nano

马斯克发布一封指控 Sam Altman 的匿名信引发猜测,OpenAI “宫斗大戏”终迎结局?

博文视点Broadview

国内怎样申请openai 内涵120美刀的api key?内涵120美刀,月底要付120美元吗?

月满楼

ChatGPT chatgpt api

文心一言 VS 讯飞星火 VS chatgpt (144)-- 算法导论12.1 4题

福大大架构师每日一题

福大大架构师每日一题

3D模型材质编辑器

3D建模设计

纹理处理 材质 贴图 模型材质 三维模型材质

LLM大模型AI能力助力企业数字化智能化转型

百度开发者中心

大模型 #人工智能

Windows10 下 CUDA 新旧多版本共存

北桥苏

Python tensorflow nlp cuda

3招解决时序数据高基数难题,性能多维度提升!

华为云开发者联盟

数据库 后端 时序数据库 华为云 华为云开发者联盟

📝 App备案与iOS云管理式证书  ,公钥及证书SHA-1指纹的获取方法

KaiwuDB 亮相中国 5G+工业互联网大会,助力新型工业化

KaiwuDB

KaiwuDB 5G工业互联网大会

Docker和Kubernetes:区别与优势对比

EquatorCoco

Docker 容器化 Kubernetes, 云原生, eBPF

如何优化Nginx服务进程详细。

百度搜索:蓝易云

nginx 云计算 Linux 运维 云服务器

IPQ8072 router and QCN9074 card combine to provide ultra-fast-stable-broad WiFi 6E network

wifi6-yiyi

QCN9074 IPQ8072

一个基于.NET Core开源、跨平台的仓储管理系统

EquatorCoco

开源 仓储控制系统 .net core

特斯拉开源 Roadster 文件随便用;微软 Copilot AI 技术开放或不对大陆开放丨 RTE 开发者日报 Vol.92

声网

Mac电脑好用的音频修复和增强工具: iZotope RX 10最新版激活包

胖墩儿不胖y

Mac软件 音频处理工具 音频修复工具

这19个JS代码技巧,后悔没有早点看到

伤感汤姆布利柏

编程 程序员 低代码 js 代码技巧

活动回顾|阿里云云原生 Serverless 技术实践营 深圳站回放&PPT下载

Serverless Devs

Serverless AIGC

生产效率的革新:腾讯混元大模型实测!

老张

人工智能 大模型

2023 中国 Serverless 用户调查,邀您填写!

Serverless Devs

云计算 Serverless AIGC

NFTScan | 11.20~11.26 NFT 市场热点汇总

NFT Research

NFT\ NFTScan nft工具

MySQL运行在docker容器中会损失多少性能

EquatorCoco

MySQL 数据库 Docker 容器化

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