当前位置: 首页 > news >正文

Spring Boot 3.0 已经就绪,您准备好了么?

Java 微服务开发框架王者 Spring

2014 年的 4 月,Spring Boot 1.0.0 正式发布。距离 1.0 版本的发布已经过去了 9 年多的时间,如今 Spring Boot 已经被 Java 开发者广泛使用,正如 JRebel 的 2022 年开发者生产力报告中提到的那样,Spring Boot 已经作为 Java 开发微服务首选的框架,并且占有主导位置。

在这里插入图片描述

Spring Boot 核心特性

· 遵循约定大于配置的核心思想。

· 可以完全不使用 XML 配置,只需要使用自动配置以及 Java Config 方式即可。

· 内嵌 Servlet 容器,降低了对环境的依赖程度,以及大大减少了学习成本。

· 依赖管理,Spring Boot 提供 starter 机制,从而大大简化了 Maven 配置。

· 应用的可观测性,Spring Boot 提供了对当前应用可观测的解决方案。

· 对 Spring 自动装配,Spring Boot 会为 jar 包的类进行自动对 Bean 的装配。

从 2014 年的 Spring Boot 1.0 版本到 2018 年的 2.0 版本,再到 2022 年 11 月的 3.0 版本。每一次大版本的升级都会带来新的特性和新的功能。而对于 Spring Boot 3.0 可以称之为 Spring 新一代框架的开始,同时也是 Spring 下一个十年的新开端。接下来让我们了解下 Spring Boot 3.0。

Spring Framework 6.0 和 Spring Boot 3.0

2022 年 11 月,Spring Framework 6.0 版本正式发布,Spring 迎来了重大的提升。升级内容包括以 Java 17 作为基线,Jakarta EE9+、AOT 的支持等。

在这里插入图片描述

在 Spring Framework 6.0 版本正式发布的一周后,Spring Boot 3.0 版本正式发布,同时带来了许多新的特性,整体来看主要的亮点如下图所示:

在这里插入图片描述

1.Java 版本的提升,Java 8 不再支持,已 Java 17 作为基线,同时以 Spring Framework 6.0 为基石。

2.通过 Spring Native,Spring 可以不再依赖 Java 虚拟机,而是采用 GraaIvm 方式将 Spring 的应用程序编译成原生镜像的方式,从而提供了一种新的方式来部署 Spring 应用,与 Java 虚拟机相比,native image 可以为许多类型的工作负载提供更经济、更可持续的托管。这些包括微服务、非常适合容器的功能工作负载和 Kubernetes。同时对业务代码层面是几乎没有修改的,并且支持 Java 和 Kotlin。使用 native image 这种方式具备一些关键优势,如即时启动、即时峰值性能和减少内存消耗。

在这里插入图片描述

3.可观察性的提升,基于 Micrometer 的内置可观测性。

4.从 Java EE 到 Jakarta EE9,包名称空间从 javax.* 到 jakarta.*.。因此,无论何时直接使用 JavaEE 中的类,我们都需要调整代码中的所有导入。

总体来说,相对于 Spring 2.x 的版本,Spring Boot 3.0 优势如下:

· 更快的启动、快速响应扩容需求、更快地响应用户请求。

· 支持 Native 方式,更适合本地云计算,尤其是无服务器计算,节省资源成本。

· 更少的内存需求。

· 提高安全性以及可观察性。

Spring Boot 2.7 社区开源版本即将停止支持

Spring Boot 2.0 是 Spring Boot 2.x 系列的第一个版本,它于 2018 年 2 月发布。2.7 则作为 Spring Boot 2.x 系列最后的一个大版本。从 2018 年 2 月首次发布 2.x 系列版本到至今已经过去了整整四年多的时间,随着 2022 年 11 月发布的 Spring Framework 6 和 Spring Boot 3.0,对于 Spring Boot 2.7 的开源支持也将于 2023 年 11 月停止。

对于 Spring Boot 2.7 版本开源支持的即将停止,有可能会带来如下的潜在风险:

· 由于缺乏持续的 Bug 修补、安全更新,应用程序可能存在程序漏洞。

· 后续可能存在不合规,安全风险。

· 后续增加了开发人员修复 OSS 错误的工作量。

如果您想对现有的版本(例如 Spring Boot 2.7 或者更早的版本)进行升级,并尝试使用 Spring Boot 3.0 及以上版本,以下的提示可能会帮助到您

· 建议您首先将现有 Spring Boot 的项目尽量迁移到 Spring Boot 2.7 版本(如果已经是 Spring Boot 2.7 版本请忽略)。

· 检查不推荐使用的代码的使用情况和遗留配置文件的处理情况(它将随新的主要版本一起删除)。

· Java 版本升级到 Java 17。

· 检查第三方项目是否有 Jakarta EE 9 兼容版本。

(更多信息可参考:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide)

可以看到的是,对于版本的升级,Spring 官方给出了一些建议和指导。这些建议和指导可以很好的帮助我们,并且减少版本升级过程中带来的问题。那么作为 Spring 生态系统管理者的 VMware 在无论是版本升级,还是 Spring Boot 3.0 使用上的最佳实践又是什么呢?接下来让我们了解下 VMware Spring 的解决方案。

VMware Spring 解决方案

VMware Spring 解决方案整体可以分为四大部分:

在这里插入图片描述

Spring 咨询和 Spring Solution Architect

为 Spring 生态系统提供全面的咨询服务。无论您在 Spring 之旅中处于何处,我们都将帮助您释放 Spring 应用程序的全部潜力。

1.升级至 Spring 的最新版本

告别繁琐的手动升级,采用精简的方法,为您的组织节省宝贵的时间和资源。VMware Tanzu Labs 通过确保无缝迁移到最新版本,降低了运行过时版本的 Spring Boot 的风险。同时确保您的应用程序经得起未来考验、安全并符合行业标准。

2.设计、开发或现代化 Spring 应用程序

使用世界上最流行的 Java 框架加快交付您的业务所需的应用程序。经验最丰富的 Spring 开发团队 VMware Tanzu Labs 通过数十年的实践完善了我们的产品开发流程。我们的专家将与您的开发人员合作,加速交付或构建和部署新的 Spring 应用程序,充分利用 Spring 的优势。

3.将现有的应用程序组合迁移到 Spring

将您的应用程序组合转移到世界上最流行的 Java 框架中,并充分利用 Spring 所提供的最佳功能。我们在 VMware Tanzu Labs 的顾问将与您的组织合作,评估您的应用程序环境,发现可能的障碍,并为成功的迁移过程制定路线图。

VMware Spring Runtime

VMware Spring Runtime 为您提供了对 Spring 生态系统的全天候商业化支持,通过与专家交流,释放 Spring® 生态系统的全部潜力。包括软件包下载、商业技术支持、产品提供等。

对 Spring boot 2.7 的版本,虽然开源社区会于 2023 年 11 月停止支持,但还是 VMware 会通过 VMware Spring Runtime 的开源软件商业化支持,支持客户的 Spring Boot 2.7 版本一直延续到 2025 年 2 月。

详细信息可参考: https://tanzu.vmware.com/spring-runtime。

Spring 学院

通过大量在线课程的学习以及论坛,以及大量的动手实验,使开发者深入了解 Spring 的各种特性,同时可以参加 Spring 专业技术认证的考试。详细信息可参考: https://spring.academy。

参考链接:

1.jrebel-2022-java-developer-productivity-report

2.https://spring.io/projects/spring-boot#support

3.https://tanzu.vmware.com/spring-consulting

4.https://tanzu.vmware.com/spring-runtime

5.https://spring.academy

6.https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide

内容来源|公众号:VMware 中国研发中心

有任何疑问,欢迎扫描下方公众号联系我们哦~

请添加图片描述

相关文章:

Spring Boot 3.0 已经就绪,您准备好了么?

Java 微服务开发框架王者 Spring 2014 年的 4 月,Spring Boot 1.0.0 正式发布。距离 1.0 版本的发布已经过去了 9 年多的时间,如今 Spring Boot 已经被 Java 开发者广泛使用,正如 JRebel 的 2022 年开发者生产力报告中提到的那样&#xff0c…...

5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因

今天给同学们分享一篇非肿瘤分型机器学习WGCNA实验的生信文章“Identification of diagnostic markers related to oxidative stress and inflammatory response in diabetic kidney disease by machine learning algorithms: Evidence from human transcriptomic data and mou…...

算法课作业2 OJ for Divide and Conquer

https://vjudge.net/contest/581947 A - Ultra-QuickSort 题意 每次给n个无序的数,互不重复,问最少需要多少次必要的交换操作使n个数有序。 思路 看一眼想到逆序数,然后验证了逆序数的个数符合样例,但想了一个3 2 1的话实际上…...

申请全国400电话的步骤及注意事项

导语:随着企业的发展,越来越多的公司开始意识到全国400电话的重要性。本文将介绍申请全国400电话的步骤及注意事项,帮助企业顺利办理相关手续。 一、了解全国400电话的概念和优势 全国400电话是一种统一的客服热线号码,以“400”…...

C++ 的设计模式之 工厂方法加单例

在下面的示例中&#xff0c;我将演示如何创建一个工厂类&#xff0c;该工厂类能够生成四个不同类型的单例对象&#xff0c;每个单例对象都通过单独的工厂方法进行创建。 #include <iostream> #include <mutex>// Singleton base class class Singleton { protecte…...

Deploy、Service与Ingress

Deployment 自愈 介绍:控制Pod&#xff0c;使Pod拥有多副本&#xff0c;自愈&#xff0c;扩缩容等能力 # 清除所有Pod&#xff0c;比较下面两个命令有何不同效果&#xff1f; kubectl run mynginx --imagenginxkubectl create deployment mytomcat --imagetomcat:8.5.68 # 自…...

定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%

随着智能设备的市场下沉&#xff0c;手游市场迎来了爆发式增长&#xff0c;《迷你世界》作为一款于2015年推出的手游&#xff0c;一经问世就饱受欢迎。上线短短三年&#xff0c;迷你世界在应用商店下载量已经高达2亿次&#xff0c;周下载量两千万&#xff0c;稳居第一名&#x…...

深度学习零基础教程

代码运行软件安装&#xff1a; anaconda:一个管理环境的软件–>https://blog.csdn.net/scorn_/article/details/106591160&#xff08;可选装&#xff09; pycharm&#xff1a;一个深度学习运行环境–>https://blog.csdn.net/scorn_/article/details/106591160&#xf…...

简单测试一下 展锐的 UDX710 性能

最近在接触 联通5G CPE VN007 &#xff0c;发现使用的是 展锐的Unisoc UDX710 CPU&#xff0c;正好简单的测试一下这颗CPU CPU信息 UDX710 是一颗 双核 ARM Cortex-A55 处理器&#xff0c;主频高达 1.35GHz processor : 0 BogoMIPS : 52.00 Features : fp…...

一百九十、Hive——Hive刷新分区MSCK REPAIR TABLE

一、目的 在用Flume采集Kafka中的数据直接写入Hive的ODS层静态分区表后&#xff0c;需要刷新表&#xff0c;才能导入分区和数据。原因很简单&#xff0c;就是Hive表缺乏分区的元数据 二、实施步骤 &#xff08;一&#xff09;问题——在Flume采集Kafka中的数据写入HDFS后&am…...

智慧公厕:探索未来城市环境卫生设施建设新标杆

智慧公厕是当代城市建设的一项重要举措&#xff0c;它集先进技术、人性化设计和智能管理于一体&#xff0c;为人们提供更为舒适、便捷和卫生的厕所环境。现代智慧公厕的功能异常丰富&#xff0c;从厕位监测到多媒体信息交互&#xff0c;从自动化清洁到环境调控&#xff0c;每一…...

高压放大器在无线电能中应用有哪些

高压放大器是一种用于放大电信号的放大器&#xff0c;可以将输入的低电压信号放大到更高的输出电压水平。在无线电通信和其他相关领域中&#xff0c;高压放大器具有广泛的应用。本文将详细介绍高压放大器在无线电能中的应用。 无线电发射&#xff1a;高压放大器在无线电发射中起…...

若依集成MybatisPlus

目录 一、依赖变更 1. MybatisPlus依赖 2. pagehelper依赖修改 二、相关配置 1. yml配置 1.1 注释掉原Mybatis配置 1.2 加入MybatisPlus的配置 1.3 注释掉原MybatisConfig.class 三、其他配置及功能实现 1. 自动补全create_time等信息 2. 实现MP分页 3. 实现Mybati…...

List小练习,实现添加图书,并且有序遍历

SuppressWarnings({"all"})public static void main(String[] args) {List list new LinkedList(); // List list new Vector(); // List list new ArrayList();list.add(new Book1("红楼小梦",35.5,"曹雪芹"));list.add(new B…...

代码随想录二刷 Day42

62.不同路径 简单题目自己就可以写出来&#xff0c;注意下创建二维vector的方法就可以&#xff0c; dp table如下 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for (int i 0; i < n; i ) {dp[…...

【Android】Drawable 和src 的区别和理解

详细讲解 在 Android 中&#xff0c;ImageView 的 src 属性和 background 属性用于设置不同类型的图像内容。下面是它们的详细解释&#xff1a; src 属性&#xff1a;该属性用于设置 ImageView 中显示的图像内容。它可以接受一个图像资源的引用&#xff0c;可以是一个图片文件…...

Linux网络-UDP/TCP协议详解

Linux网络-UDP/TCP协议详解 2023/10/17 14:32:49 Linux网络-UDP/TCP协议详解 零、前言一、UDP协议二、TCP协议 1、应答机制2、序号机制3、超时重传机制4、连接管理机制 三次握手四次挥手5、理解CLOSE_WAIT状态6、理解TIME_WAIT状态7、流量控制8、滑动窗口 丢包问题9、拥塞控制…...

C语言从入门到高级

C语言是“编程语言之首”&#xff08;很多人学习的第一门编程语言&#xff09;&#xff0c;学好一门编程语言需要明确其学习路径&#xff0c;下面分享下我的学习路径&#xff0c;希望对您有所帮助。 一、C语言入门 &#xff08;1&#xff09;C语言概述 &#xff08;2&#x…...

【MultiOTP】在Linux上使用MultiOTP进行SSH登录

在前面的文章中【FreeRADIUS】使用FreeRADIUS进行SSH身份验证已经了解过如何通过Radius去来实现SSH和SUDO的登录&#xff0c;在接下来的文章中只是将密码从【LDAP PASSWORD Googlt OTP】改成了【MultiOTP】生成的passcode&#xff0c;不在需要密码&#xff0c;只需要OTP去登录…...

性能超越 Clickhouse | 物联网场景中的毫秒级查询案例

1 物联网应用场景简介 物联网&#xff08;Internet of Things&#xff0c;简称 IoT&#xff09;是指通过各种信息传感、通信和 IT 技术来实时连接、采集、监管海量的传感设备&#xff0c;从而实现对现实世界的精确感知和快速响应&#xff0c;继而实现自动化、智能化管理。在查…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...