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

news2024/11/16 1:50:47

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 中国研发中心

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

请添加图片描述

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

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

相关文章

apk反编译工具下载

1、jadx https://github.com/skylot/jadx 2、APK签名 https://developer.android.google.cn/studio/command-line/apksigner?hlzh-cn

jdbc设置StatementTimeout后还需要设置socket timeout参数吗

背景 我们设置JDBC参数时,不管有没有在Statement中配置超时时间StatementTimeout,我们都需要配置jdbc的socket timeout参数,那么为什么这个socket timeout参数如此必要,不设置又会怎么样? 问题真相 首先设置了State…

如何使用 MiniGPT-v2

MiniGPT-v2 是一个基于视觉语言模型(LLM)的多任务学习系统。它可以用于各种视觉语言任务,包括图像描述、图像识别、图像-文本对话等。 本文将介绍如何使用 MiniGPT-v2。 MiniGPT-v2 提供了一个简单的在线演示,可以用于测试模型。…

【AI视野·今日Robot 机器人论文速览 第五十六期】Tue, 17 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 17 Oct 2023 Totally 60 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Interactive Task Planning with Language Models Authors Boyi Li, Philipp Wu, Pieter Abbeel, Jitendra Malik交互式机器人…

51单片机仿真软件 Proteus 8 Pro 安装步骤

51单片机仿真软件 Proteus 8 Pro 安装步骤 学习 51 单片机的时候,如果手头没有开发板,可以使用仿真软件 Proteus。Proteus 可以仿真 51 单片机及周边元器件(例: LED) 的运行情况。 可以简单认为:Proteus …

C#字符串操作:拼接、截取、分割等高效处理方法

目录 1.前言2. 字符串拼接 (String Concatenation)3. 字符串截取 (String Substring)4. 字符串分割 (String Split)5. 字符串替换 (String Replace)6. 字符串大小写转换 (String Case Conversion)7. 结论 1.前言 在C#编程中,字符串操作是不可避免的一部分。无论是拼…

React之受控组件和非受控组件以及高阶组件

一、受控组件 受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据 举个简单的例子: class TestComponent extends React.Component {constructor (props) {super(props);this.state { username: lindaidai }…

最新百度统计配置图文教程,获取siteId、百度统计AccessToken、百度统计代码教程

一、前言 很多网友开发者都不知道百度统计siteId、百度统计token怎么获取,在网上找的教程都是几年前老的教程,因此给大家出一期详细百度统计siteId、百度统计token、百度统计代码获取详细步骤教程。 二、登录到百度统计 1.1 登录到百度统计官网 使用…

零基础学习HTML5(列表、表格、表单)

01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目。 <ul>…

2506. 统计相似字符串对的数目

2506. 统计相似字符串对的数目 js代码&#xff1a; /*** param {string[]} words* return {number}*/ var similarPairs function (words) {// 将字符串数组的每一项去重排序words words.map(item > [...new Set(item)].sort().join())let res 0for (let i 0; i < w…

lvgl模拟器添加图片,编译提示无法解析的外部符号

目录 一、1. v_img_set_src(obj, &img_cogwheel_argb);2. 二、1.2. 一、 1. v_img_set_src(obj, &img_cogwheel_argb); 编译一下&#xff0c;报以下错误 错误原因是img_cogwheel_argb.c 文件中的变量img_cogwheel_argb定义按C编译 const lv_img_dsc_t img_cogwhee…

docker入门加实战—部署Java和前端项目

docker入门加实战—部署Java和前端项目 部署之前&#xff0c;先删除nginx&#xff0c;和自己创建的dd两个容器&#xff1a; docker rm -f nginx dd部署Java项目 作为演示&#xff0c;我们的Java项目比较简单&#xff0c;提供了一个接口&#xff1a; 配置文件连接docker里的m…

自动切割短视频的软件推荐,一键生成1000条短视频,支持六大主流平台矩阵分发,快来免费试用

经过小编的多方测评&#xff0c;今天给大家推荐一款性价比、好评率、专业性全都超高的软件——超级编导批量剪辑软件&#xff0c;更重要的是这款软件支持免费试用&#xff0c;一起来看看超级编导如何帮助大家自动分割视频的吧。 复制视频链接&#xff0c;一键上传视频素材后&am…

JAVA基础(JAVA SE)学习笔记(四)IDEA安装、使用、设置、断点、乱码汇总

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 正文 JAVA基础&#xff08;JAVA SE&#xff09;学习笔记&#xff08;一&#xff09;JAVA学习路线、行业了解…

【复盘】记录一次数据库连接资源占用完毕

背景 因为历史原因项目使用的是JDBC原始SQL&#xff0c;然后进行拉去三方数据进行解析分析。跑了一会之后发现影响到了线上业务&#xff0c;连接错误。 一查看其实就是刚才跑的定时导致的&#xff0c;分析了下没有及时释放数据库连接。导致资源耗尽。数据库异常。 所以这里其实…

大数据之Hudi数据湖_基本概念_文件布局_文件管理 基本概念_索引_的原理_索引选项_全局索引与非全局索引---大数据之Hudi数据湖工作笔记0007

这里对于hudi中有两种表,一种是MOR表,这个是hudi表,一种是COW表, MOR表会产生日志,因为会有增删改的日子对数据的,然后COW是没有日志的,COW是copy on write 的意思.是复制的数据所以不会牵扯到该删的操作. 这里因为hudi有多版本控制,所以这里就有了合并日志和基本文件的操作,…

掌握C++魔法:深入解析类与对象(上篇)

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; &#x1f354;前言&#xff1a; 之前我们学习了从C语言转到C后我们需要知道的一些关键改动与变化。今天我们就要学习C独有的类与对象。在谈论类与对象之前我们先说一下什么是面向对象的C&#xff0c;什么是面向过程的C语…

【网络】计算机网络基础概念入门

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;…

【安全】网络安全态势感知

一、态势感知简介 如果你对网络安全入门感兴趣&#xff0c;那么你需要的话可以点击这里&#x1f449;【入门&进阶全套282G学习资源包免费分享&#xff01;】 1.概念 态势感知是一种基于环境的、动态、整体地洞悉安全风险的能力&#xff0c;是以 安全大数据 为基础&#…

【MyBatisPlus】快速入门、常用注解、常用配置

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MyBatisPlus 一、快速入门1.1 引入MyBatisP…