船新SpringBoot 3.1正式发布,新特性真香

news2024/11/18 12:32:39

Spring Boot 3.1 正式发布

Spring Boot 3.0 发布半年左右,Spring Boot 3.1 正式发布了:

同时发布更新的还有 2.7.x 版本,同时,2.6.x 版本线已经停止维护了,最新支持版本如下图所示:

2.7.x 这也是目前唯一正在维护的 2.x 版本线了,商业支持的版本也只有 2.5.x 了。

Spring Boot 3.0 重大新特性

看了下,Spring Boot 3.1 更新了不少内容,今天就简单分享下几个重要的更新。

1、最低环境要求

Spring Boot 3.0 的发布,其最低要求 Java 17,并向上兼容支持 Java 19,Spring Boot 3.1 可以支持 Java 20 了,因为前段时间 Java 20 发布了。

对 Java 开发环境的要求对比表:

Spring BootJDKSpringMavenGradle
3.1.017 ~ 206.0.9+3.6.3+7.5+,8.x
3.0.017 ~ 196.0.2+3.5+7.5+
2.7.128 ~ 205.3.27+3.5+6.8.x, 6.9.x, 7.x, 8.x

2、大量依赖升级

Spring Boot 3.1 最低支持的 Spring 框架也变成了 Spring 6.0.9+,除此之外,Spring Boot 管理的大量第三方的技术依赖也有大幅度的的升级,具体可以参考官方版本发布文档:

https://github.com/spring-projects/spring-boot/releases/tag/v3.1.0

以上这些技术的升级对于 Spring Boot 应用的升级也是一头拦路虎。

3、移除 HttpClient 4

因为 Spring 6 删除了 RestTemplate 对 Apache HttpClient 4 的支持,取而代之的则是 Apache HttpClient 5。

而 Spring Boot 3.0 又同时包含了 HttpClient 4 和 HttpClient 5 两个依赖的管理,如果同时管理这两个版本,有的人可能会继续使用 HttpClient 4,应用程序在使用 RestTemplate 时可能会有潜在的错误,导致诊断困难。

所以,Spring Boot 3.1 移除了 HttpClient 4 的依赖管理,转而逼迫用户强制使用 HttpClient 5,大家有依赖 HttpClient 4 的升级时需要注意了。

4、Servlet 和 Filter 注册失败时抛异常

大家知道,Spring Boot 注册 Servlet 和 Filter 时用的 ServletRegistrationBean 和 FilterRegistrationBean 这两个类,之前注册失败时是记录 warn 级别的日志,现在则是直接抛出 IllegalStateException 异常。

如果不想注册失败抛出异常,还是想像以前一样记录 warn 警告日志,可以调用这两个类的 setIgnoreRegistrationFailure(true) 方法,即忽略注册失败,使用示例如下:

@Bean
public ServletRegistrationBean registerServlet() {
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new RegisterServlet(), "/registerServlet");
    servletRegistrationBean.addInitParameter("type", "初始化参数1");
    servletRegistrationBean.addInitParameter("name", "初始化参数2");
    servletRegistrationBean.setIgnoreRegistrationFailure(true);
    return servletRegistrationBean;
}

5、Spring Authorization Server 自动配置

Spring Boot 3.1 提供了一个 spring-boot-starter-oauth2-authorization-server 启动器,可以支持 Spring Authorization Server 的自动配置,轻松配置基于 Servlet 的 OAuth2 授权服务器。

6、Docker Compose 新模块

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,即官方容器编排工具,它可以轻松地定义多个容器之间的依赖关系、环境变量、网络设置等,并通过一个命令即可创建、启动和连接这些容器。

Spring Boot 3.1 提供了一个新模块:spring-boot-docker-compose,它支持与 Docker Compose 集成,当 Spring Boot 应用启动时,它会在当前工作目录中查找配置文件。

支持以下几种配置文件:

  • compose.yaml

  • compose.yml

  • docker-compose.yaml

  • docker-compose.yml

7、SSL 配置

Java KeyStore 和 PEM 编码证书等 SSL 信任相关的资料,现在可以使用 properties 属性进行配置,并且可以适用于各种类型的连接,例如嵌入式 Web 服务器、数据服务、RestTemplate 和 WebClient。

8、服务连接

Spring Boot 3.1 引入了一个新的服务连接概念,这是一个低级别的功能,旨在作为其他高级功能的构建块,这些高级功能可以通过定义 ConnectionDetails Bean 自动配置服务连接。

ConnectionDetails Bean 提供了建立、删除服务连接所需的详细信息,并且 Spring Boot 的自动配置也已经支持,当这些 Bean 可用时,它们将优先于任何与连接相关的配置参数,但是,与连接本身无关的配置参数(比如:控制连接池大小和行为的参数)仍将使用。

Spring Boot 最新支持版本

整理了下 Spring Boot 的最新版本支持情况:

版本发布时间停止维护时间停止商业支持
3.1.x2023-05-182024-05-182025-08-18
3.0.x2022-11-242023-11-242025-02-24
2.7.x2022-05-192023-11-182025-02-18
2.6.x2021-12-172022-11-242024-02-24
2.5.x2021-05-20已停止2023-08-24
2.4.x2020-11-12已停止2023-02-23
2.3.x2020-05-15已停止已停止
2.2.x2019-10-16已停止已停止
2.1.x2018-10-10已停止已停止
2.0.x2018-03-01已停止已停止
1.5.x2017-01-30已停止已停止

话说你们用的哪个 Spring Boot 版本?

参考资料

更多参考官方文档:

https://docs.spring.io/spring-boot/docs/3.1.0/reference/html/web.html


虽然目前SpringBoot 3.1已经发布,但由于其最低要求Java 17,目前主流版本还是SpringBoot 2.7。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python条件判断

目录 1. 语法 2. 常见用法 2.1. 比较符判断 2.2. 逻辑符判断 2.3. 成员符判断 2.4. 三目运算 1. 语法 记住3个关键字:if(表示如果)、elif(再如果)、else(否则) if [条件1]&#xff1…

数据链路层概述

1.数据链路层概述 笔记来源: 湖科大教书匠:数据链路层概述 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 1.1 数据链路层在网络体系结构中的地位 主机具有体系结构的各个层次,路由器只需具有体系就够的最下面三…

chatgpt赋能python:Python“+”-了解Python中最常用的运算符

Python “” - 了解Python中最常用的运算符 Python是一种高级编程语言,用于开发各种应用程序,从Web应用和桌面应用到数据分析和科学计算。Python是一种简单易学,可读性强的语言,拥有丰富的库和工具。 在Python中,“”…

桥接模式解密:跨越鸿沟,桥接抽象与实现

一、概要 桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们都可以独⽴的变化。其核心思想就是解耦,在面向对象编程中,抽象和实现是通过继承关系来实现的,但这…

《C和指针》读书笔记(第八章 数组)

目录 0 内容简介1. 一维数组1.1 数组名1.2 下标引用1.3 指针与下标1.4 指针的效率1.5 数组和指针1.6 作为函数参数的数组名1.7 声明数组参数1.8 初始化1.9 不完整的初始化1.10 自动计算数组长度1.11 字符数组的初始化 2. 多维数组2.1 存储顺序2.2 数组名2.3 下标2.4 指向数组的…

爆火出圈的chatGPT,到底是什么东东?

爆火出圈的chatGPT,到底是什么东东? 前言 2022年 11 月 30 日,OpenAI 实验室创始人兼 CEO Sam Altman 宣布发布聊天机器人模型:ChatGPT。ChatGPT 可以模仿人类的说话风格回答问题。很快,ChatGPT 火爆社交圈&#xff…

Linux音频和视频命令速查表

在Linux系统中,有许多命令可以帮助我们处理音频和视频文件,从基本的播放和转码,到编辑和处理音频、视频流。 本文将提供一个Linux音频和视频命令速查表,帮助您快速查找并了解各种常用的命令及其用法。 音频命令 播放音频文件 a…

堆和堆排序

目录 堆的概念 堆的实现 堆的存储结构 堆的插入操作 堆的删除操作 堆的创建 向上调整建堆和向下调整建堆 堆排序 堆的应用 - topK问题 堆的概念 “堆”是计算机科学中一种数据结构,可以看作是一棵完全二叉树。通常满足堆的性质:父节点的值总是…

【Linux】进程控制 — 进程程序替换 + 实现简易shell

文章目录 📖 前言1. 进程程序替换1.1 程序替换的概念:1.2 为什么要程序替换:1.3 程序替换的原理: 2. 六个exec替换函数2.1 execl函数:2.2 execv函数:2.3 execlp函数:2.4 execvp函数:…

chatgpt赋能python:Python[:2]——简介和应用

Python [:2]——简介和应用 Python [:2]是一种流行的编程语言,其简单易用的语法使其成为许多人的首选编程语言之一。Python [:2]的迅速增长已经超越了其他编程语言,并且它正在成为各行各业中最有前途的编程语言之一。 Python 基础 Python [:2]的语法非…

MSQL系列(三) Mysql实战-索引最左侧匹配原则原理

Mysql实战-索引最左侧匹配原则原理 前面我们讲解了索引的存储结构,我们知道了BTree的索引结构,索引的叶子节点是严格排序的,就像你看到的 底层叶子节点 15->18->20->30->49->50等等 这样做有什么好处呢? 这就引出…

利用qsort排序

一、简单排序10个元素的一维数组 #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:6031) #include<stdio.h> #include<stdlib.h> void print_arr(int arr[], int sz) {int i 0;for (i 0; i < sz; i){printf("%d ", arr[i]);}printf("…

WMS服务启动

WMS服务启动 1、SystemServer.java#startOtherServices(t)中启动2、WindowManagerService.java#main创建初始化3、简易时序图4、相关线程 1、SystemServer.java#startOtherServices(t)中启动 WMS属于SystemServer启动众多的系统服务中的一个&#xff0c;WindowManagerService中…

社会工程学技术框架解读

社会工程学技术其实就是利用各种心理进行技术上的欺骗。 尽管许多社会工程学大师都是无师自通,依赖自己的天赋悟性、聪明才智和临场应变能力不断演绎着社会工程学艺术,然而,社会工程学仍然具有一些通用的技术流程与共性特征。Social-Engineer 网站创始人克里斯哈德纳吉对其加…

Spring Cloud Alibaba 快速上手搭建公司项目(二)Nacos

Nacos(全称为&#xff1a;阿里巴巴开源项目 - 命名服务 & 配置中心)是阿里巴巴集团开源的一个动态服务发现、配置管理和服务管理平台。它提供了一种简单易用的方式来管理和监控微服务应用程序中的服务实例、配置和元数据。 Nacos是一个高度可扩展的平台&#xff0c;支持多…

chatgpt赋能python:Python中的[::-1]操作:反转列表、元组和字符串

Python中的[::-1]操作&#xff1a;反转列表、元组和字符串 在Python编程中&#xff0c;[::-1]是一个相当常用的操作符&#xff0c;它可以对列表、元组、字符串等序列类型进行反转。本文将详细介绍这个操作符的语法和使用方法&#xff0c;并且为您提供一些在实际应用中的例子。…

css浮动特性

1. 传统网页的三种布局方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…

类和对象【3】初始化列表

全文目录 引言初始化列表定义特性 总结 引言 上一篇文章中介绍了构造函数&#xff0c;它可以在实例化一个类对象的时候自动调用&#xff0c;以初始化类对象&#xff1a; 戳我看默认成员函数详解 但是&#xff0c;不难发现&#xff0c;在构造函数体中对成员变量的初始化其实是属…

武汉环保门禁电子台账视频监控系统

武汉环保门禁电子台账视频监控系统&#xff0c;是顺应国家政策需求&#xff0c;基于视频监控、环保门禁系统、物联技术&#xff0c;结合大数据和人工智能等技术手段&#xff0c;对汽车排放单位进行环境管理的一套综合系统。 系统介绍 该系统实现对机动车排放检测的监管&#…

Android 读取本地数据进行本地开发

前言 在日常开发当中&#xff0c;API接口还没有部署&#xff0c;但是UI已经出来了&#xff0c;这时候往往都会使用本地数据进行功能界面的搭建&#xff0c;这样往往能很大程度节约开发时间&#xff0c;工具类拿来直接用&#xff0c;话不多说&#xff0c;开整 一、项目搭建 1…