【SpringBoot3】Spring Boot 3.0 介绍以及新特性

文章目录

  • 一、Spring Boot 3.0
    • 1、介绍
    • 2、Spring Boot 核心概念
    • 3、Spring Boot 3.0 新特性
  • 二、Spring Boot Starter
    • 1、介绍
    • 2、Starter 命名规则
    • 3、官方提供了哪些Starter
  • 三、spring-boot-starter-parent 说明
  • 四、示例:创建web项目
  • 参考

一、Spring Boot 3.0

1、介绍

Spring Boot 3.0 是 Spring Boot 框架的一个重要版本,它在保持了 Spring Boot 的一贯优点的同时,也进行了一些重要的改进和更新。

首先,Spring Boot 3.0 对 Java 版本的要求进行了更新。这个版本要求使用 Java 17 作为最低版本,以利用最新的语言特性和性能改进。如果你正在使用的是 Java 8 或 Java 11,则需要先升级 JDK 版本,然后再开发 Spring Boot 3.0 应用程序。

其次,Spring Boot 3.0 对 Spring Framework 的版本也进行了更新。这个版本要求使用 Spring Framework 6.0.2 或更高版本。Spring Framework 的新版本进行了一些特性的改进,包括 WebFlux 的改进、更好的性能和可扩展性。

此外,Spring Boot 3.0 还进行了一些非功能特性的改进,例如对嵌入式服务器、安全、度量、健康检查和外部化配置等特性的支持。这些改进可以帮助开发者更方便地构建和管理应用程序。

另外,Spring Boot 3.0 还对一些底层依赖项进行了更新。这个版本将所有底层依赖项从 Java EE 迁移到了 Jakarta EE API,基于 Jakarta EE 9 并尽可能地兼容 Jakarta EE 10。这一改变可以帮助开发者更好地利用最新的技术栈,并提高应用程序的兼容性和可维护性。

最后,Spring Boot 3.0 还进行了一些性能和安全性的优化。这个版本通过一系列的性能优化措施,提高了应用程序的运行效率,满足了高并发、低延迟的应用需求。同时,也引入了更多的安全特性,如 OAuth2、JWT 等,增强了应用程序的安全性。

总的来说,Spring Boot 3.0 是一个非常值得关注的版本。它通过改进和更新,进一步简化了开发过程、提高了应用程序的性能和安全性,满足了当前软件开发领域的需求。

2、Spring Boot 核心概念

  1. 自动配置:Spring Boot自动配置机制旨在根据项目中添加的依赖自动配置Spring应用程序。这减少了需要编写的配置代码和XML配置。

  2. 起步依赖(Starters):起步依赖是一组便捷的依赖描述符,它们可以包含在应用程序中,并提供所需的依赖项集合,简化构建配置。

  3. 命令行接口:Spring Boot提供了一个命令行工具,用于快速开发和运行Spring应用程序。

  4. Actuator:Spring Boot Actuator提供了一组生产准备特性,帮助你监控和管理应用程序。

  5. 内置容器支持:Spring Boot提供了嵌入式HTTP服务器的支持,如Tomcat、Jetty和Undertow,无需部署WAR文件。

  6. 配置管理:Spring Boot提供了强大的配置管理能力,可以通过properties或YAML文件、环境变量和命令行参数来管理。

  7. 日志管理:Spring Boot内置了日志配置,提供了多种日志框架的支持。

  8. 安全:Spring Boot整合了Spring Security,提供了强大的安全性支持。

  9. 数据访问:Spring Boot简化了数据访问技术(如JDBC、JPA、Hibernate)的配置和使用。

  10. 测试:提供了丰富的测试工具,简化了单元和集成测试的过程。

  11. 云原生支持:为构建云原生应用程序提供支持,包括与Spring Cloud的集成,以及对微服务架构的支持。

  12. 响应式编程:从Spring Framework 5开始,Spring Boot支持响应式编程模型,适用于构建响应式系统。

  13. 国际化和本地化:提供对多语言和地区设置的支持,简化国际化应用的开发。

  14. 开发者工具:提供了一系列的开发者工具,如热部署、默认配置和应用状态检查,以提高开发效率。

  15. 事件和监听器:支持使用事件和监听器模式,以实现不同组件间的松耦合通信。

3、Spring Boot 3.0 新特性

Spring Boot 3.0,于2022年11月发布,相较于其前身Spring Boot 2.0,引入了多项重大改变和改进。以下是Spring Boot 3.0的主要特性和变化概览:

  1. Java 17作为基础并支持Java 19:Spring Boot 3.0要求至少使用Java 17,并且与Java 19兼容,因此不适用于运行在JDK 8或11上的项目。

  2. 迁移到Jakarta EE 9:从Java EE转向Jakarta EE 9是一个重大变化。这个转变包括将Java EE类的命名空间从javax.*改为jakarta.*,这需要在代码导入中相应地进行更新。

  3. Log4j2增强功能:Spring Boot 3.0引入了新的Log4j2特性,例如特定于配置文件的配置、环境属性查找以及对众多系统属性的支持。

  4. Micrometer和Micrometer Tracing的可观察性:新版本整合了基于Micrometer和Micrometer追踪的Spring Observability,增强了应用度量记录并提供了追踪支持。

  5. GraalVM原生映像功能:一个值得注意的新增功能是对将应用程序转换为GraalVM原生映像的支持,这可以带来更快的启动时间和减少的内存消耗。

  6. 依赖项升级:Spring Boot 3.0包括对多个Spring项目(如Spring Integration、Spring Security、Spring AMQP等)以及第三方库(如Hibernate Validator、Jackson、Jetty和Tomcat等)的升级。

  7. 改进的可观察性:新版本支持Micrometer 1.10中引入的观察API,包括用于创建观察的ObservationRegistry接口

这些变化强调了Spring Boot框架的重要演变,专注于现代Java标准、提升性能和改进的可观察性功能。从早期版本,特别是Spring Boot 2.0,升级到Spring Boot 3.0将需要仔细考虑这些变化,特别是Java和Jakarta EE版本要求和依赖项更新。

二、Spring Boot Starter

1、介绍

Spring Boot Starter是Spring Boot中的一个重要概念,它简化了Spring应用程序的初始化和开发过程。以下是Spring Boot Starter的主要作用和特点:

  1. 整合依赖:Spring Boot Starter将与特定功能相关的依赖整合在一起,使得开发者只需要在项目中引入相应的Starter,就可以快速地使用该功能。这大大简化了依赖管理和配置过程。
  2. 自动配置:Spring Boot Starter提供了自动配置功能,可以根据项目中的依赖和环境自动完成配置。这避免了手动配置的繁琐和易错性,使得开发者能够更加专注于业务逻辑的实现。Starter自动配置了大部分常用场景的默认行为,这样开发者就无需手动设置。例如,添加了数据库相关的Starter后,Spring Boot会自动配置数据库连接和对象关系映射(ORM)
  3. 简化开发:通过Spring Boot Starter,开发者可以快速地构建出独立、可运行的、生产级别的Spring应用程序。它提供了大量预设的配置和功能,使得开发者无需从零开始搭建应用程序。
  4. 可扩展性:Spring Boot Starter不仅简化了开发过程,同时也为应用程序的扩展提供了便利。它提供了可扩展的接口和机制,使得开发者可以根据需要添加或修改配置项。

总之,Spring Boot Starter为开发者提供了一种快速、简便的方式来构建和开发Spring应用程序,它简化了依赖管理、自动配置、默认配置和可扩展性等方面的问题,使得开发者能够更加高效地开发出高质量的应用程序。

2、Starter 命名规则

所有的官方启动器都遵循类似的命名模式:spring-boot-starter-*,其中*代表特定类型的应用程序。这种命名结构有助于你在需要查找启动器时进行查找。许多IDE中的Maven集成可以让你按名称搜索依赖项。例如,安装了适当的Eclipse或Spring Tools插件后,你可以在POM编辑器中按ctrl-space键,然后输入“spring-boot-starter”以获取完整列表。

如“创建自己的启动器”部分所述,第三方启动器不应该以spring-boot开头,因为这是为官方Spring Boot工件保留的。相反,第三方启动器通常以项目的名称开头。例如,名为thirdpartyproject的第三方启动器项目通常命名为thirdpartyproject-spring-boot-starter

3、官方提供了哪些Starter

参考 https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters

以下应用程序启动器由Spring Boot在org.springframework.boot组下提供:

名称描述
spring-boot-starter包括自动配置支持、日志和YAML的核心启动器
spring-boot-starter-activemq使用Apache ActiveMQ进行JMS消息传递的启动器
spring-boot-starter-amqp使用Spring AMQP和Rabbit MQ的启动器
spring-boot-starter-aop使用Spring AOP和AspectJ进行面向切面编程的启动器
spring-boot-starter-artemis使用Apache Artemis进行JMS消息传递的启动器
spring-boot-starter-batch使用Spring Batch的启动器
spring-boot-starter-cache使用Spring Framework的缓存支持的启动器
spring-boot-starter-data-cassandra使用Cassandra分布式数据库和Spring Data Cassandra的启动器
spring-boot-starter-data-cassandra-reactive使用Cassandra分布式数据库和Spring Data Cassandra Reactive的启动器
spring-boot-starter-data-couchbase使用Couchbase文档导向数据库和Spring Data Couchbase的启动器
spring-boot-starter-data-couchbase-reactive使用Couchbase文档导向数据库和Spring Data Couchbase Reactive的启动器
spring-boot-starter-data-elasticsearch使用Elasticsearch搜索和分析引擎和Spring Data Elasticsearch的启动器
spring-boot-starter-data-jdbc使用Spring Data JDBC的启动器
spring-boot-starter-data-jpa使用Spring Data JPA和Hibernate的启动器
spring-boot-starter-data-ldap使用Spring Data LDAP的启动器
spring-boot-starter-data-mongodb使用MongoDB文档导向数据库和Spring Data MongoDB的启动器
spring-boot-starter-data-mongodb-reactive使用MongoDB文档导向数据库和Spring Data MongoDB Reactive的启动器
spring-boot-starter-data-neo4j使用Neo4j图数据库和Spring Data Neo4j的启动器
spring-boot-starter-data-r2dbc使用Spring Data R2DBC的启动器
spring-boot-starter-data-redis使用Redis键值数据存储、Spring Data Redis和Lettuce客户端的启动器
spring-boot-starter-data-redis-reactive使用Redis键值数据存储、Spring Data Redis reactive和Lettuce客户端的启动器
spring-boot-starter-data-rest使用Spring Data REST和Spring MVC展示Spring Data仓库的启动器
spring-boot-starter-freemarker使用FreeMarker视图构建MVC Web应用的启动器
spring-boot-starter-graphql使用Spring GraphQL构建GraphQL应用的启动器
spring-boot-starter-groovy-templates使用Groovy Templates视图构建MVC Web应用的启动器
spring-boot-starter-hateoas使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用的启动器
spring-boot-starter-integration使用Spring Integration的启动器
spring-boot-starter-jdbc使用HikariCP连接池的JDBC的启动器
spring-boot-starter-jersey使用JAX-RS和Jersey构建RESTful Web应用的启动器,是spring-boot-starter-web的替代品
spring-boot-starter-jooq使用jOOQ访问SQL数据库的启动器,是spring-boot-starter-data-jpa或spring-boot-starter-jdbc的替代品
spring-boot-starter-json用于读写json的启动器
spring-boot-starter-mail使用Java Mail和Spring Framework的邮件发送支持的启动器
spring-boot-starter-mustache使用Mustache视图构建Web应用的启动器
spring-boot-starter-oauth2-authorization-server使用Spring Authorization Server功能的启动器
spring-boot-starter-oauth2-client使用Spring Security的OAuth2/OpenID Connect客户端功能的启动器
spring-boot-starter-oauth2-resource-server使用Spring Security的OAuth2资源服务器功能的启动器
spring-boot-starter-pulsar使用Spring for Apache Pulsar的启动器
spring-boot-starter-pulsar-reactive使用Spring for Apache Pulsar Reactive的启动器
spring-boot-starter-quartz使用Quartz调度器的启动器
spring-boot-starter-rsocket构建RSocket客户端和服务器的启动器
spring-boot-starter-security使用Spring Security的启动器
spring-boot-starter-test测试Spring Boot应用的启动器,包括JUnit Jupiter、Hamcrest和Mockito等库
spring-boot-starter-thymeleaf使用Thymeleaf视图构建MVC Web应用的启动器
spring-boot-starter-validation使用Hibernate Validator进行Java Bean验证的启动器
spring-boot-starter-web构建Web应用(包括RESTful应用)的启动器,使用Spring MVC,默认嵌入Tomcat容器
spring-boot-starter-web-services使用Spring Web Services的启动器
spring-boot-starter-webflux使用Spring Framework的Reactive Web支持构建WebFlux应用的启动器
spring-boot-starter-websocket使用Spring Framework的MVC WebSocket支持构建WebSocket应用的启动器

三、spring-boot-starter-parent 说明

Spring Boot Starter Parent是一个特殊的starter,它定义了一个Spring Boot项目的父工程。它提供了很多默认的配置,这些配置可以大大简化我们的开发。

具体来说,Spring Boot Starter Parent主要做了以下事情:

  1. 定义了Java编译版本为1.8
  2. 使用UTF-8格式编码
  3. 继承自spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
  4. 执行打包操作的配置。
  5. 自动化的资源过滤。
  6. 自动化的插件配置。
  7. 针对application.properties和application.yml的资源过滤,包括通过profile定义的不同环境的配置文件,例如application-dev.properties和application-dev.yml。

尽管Java 17是Spring Boot 3.0的最低要求版本,但spring-boot-starter-parent将Java编译版本定义为1.8可能是为了保持与现有Spring Boot应用程序和库的兼容性,以及为了提供更好的社区支持和长期维护。

总之,Spring Boot Starter Parent是一个非常重要的依赖管理工具,它为Spring Boot项目提供了一系列的默认配置和功能,使得开发者能够更加高效地开发出高质量的应用程序。

四、示例:创建web项目

打开集成开发工具 IDEA,依次选择 File -> New -> Project

1、左边选择菜单Spring Initializr输入工程名称
2、输入Group、Artifact、以及 Package name
3、JDK 选择 17版本
4、点击下一步,选择需要的组件(Lombok、Spring Web)
5、点击按钮“Create”
在这里插入图片描述

创建完成后,工程结构大致如下:

6、创建测试Controller,放在controller包中

@RestController
public class HelloController {@RequestMapping("/hello")public String hello() {return "Hello World";}
}

7、执行启动类Application.java,启动完成后在浏览器中输入 http://localhost:8080/hello 即可看见测试输出

完整工程结构示例图:

在这里插入图片描述

参考

  • Spring Boot Reference Documentation
  • Spring Boot Starters

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.3.3 使用集线器的星形拓扑

3.3.3 使用集线器的星形拓扑 集线器的一些特点 3.3.4 以太网的信道利用率 多个站在以太网上同时工作就可能会发生碰撞当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到100% 3.…

HackerGPTWhiteRabbitNeo的使用及体验对比

1. 简介 WhiteRabbitNeo(https://www.whiterabbitneo.com/)是基于Meta的LLaMA 2模型进行特化的网络安全AI模型。通过专门的数据训练,它在理解和生成网络安全相关内容方面具有深入的专业能力,可广泛应用于教育、专业培训和安全研究…

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步:安装 SQL Server 数据库 这是一个很详细的安装教程,可以参考一下 安装SQL Server详细教程 需要注意:安装实例时,建议在‘身份验证模式’直接选择“混合模式”…

Flink定制化功能开发,demo代码

前言: 这是一个Flink自定义开发的基础教学。本文将通过flink的DataStream模块API,以kafka为数据源,构建一个基础测试环境;包含一个kafka生产者线程工具,一个自定义FilterFunction算子,一个自定义MapFunctio…

Tiktok/抖音旋转验证码识别

一、引言 在数字世界的飞速发展中,安全防护成为了一个不容忽视的课题。Tiktok/抖音,作为全球最大的短视频平台之一,每天都有数以亿计的用户活跃在其平台上。为了保护用户的账号安全,Tiktok/抖音引入了一种名为“旋转验证码”的安…

win10系统postgresql重装软件后原数据如何迁移

1、备份postgresql安装目录下的data文件夹 2、重新安装postgresql同一版本的软件 3、停止postgresql-x64-12服务 4、替换data文件夹 删除postgresql安装后新的的data文件夹 删除后将第一步备份的data文件夹粘贴过来,还是同一位置 5、启动postgresql-x64-12服务 …

[笔记]深度学习入门 基于Python的理论与实现(一)

代码仓库 gitee 1. python 入门 1.5之前是python安装和基础语法, 我直接跳过了 1.5 Numpy 深度学习中经常出现数组和矩阵运算,Numpy 的数组类 numpy.array 提供了很多便捷的方法 1.5.1 导入 Numpy import numpy as np1.5.2 生成 Numpy 数组 np.array()&#xf…

C语言从入门到实战——联合体和枚举

联合体和枚举 前言一、 联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合的一个练习 二、枚举类型2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 前言 C语言中,联合体(union&#…

Shape-IoU——综合考量边框形状与尺度的度量

今天看到一篇文章主要是提出了一种更有效的IOU度量方法,论文地址在这里,如下所示: 摘要 边界盒回归损失作为检测器定位分支的重要组成部分,在目标检测任务中起着重要作用。现有的边界框回归方法通常考虑GT框和预测框之间的几何关…

【深度学习每日小知识】Logistic Loss 逻辑回归

逻辑回归的损失函数 线性回归的损失函数是平方损失。逻辑回归的损失函数是对数损失,定义如下: L o g L o s s ∑ ( x , y ) ∈ D − y log ⁡ ( y ′ ) − ( 1 − y ) log ⁡ ( 1 − y ′ ) LogLoss\sum_{(x,y)\in D}-y\log(y)-(1-y)\log(1-y) LogLoss…

Spring Task 任务调度工具

大家好我是苏麟 , 今天聊聊Spring Task 任务调度工具 Spring Task Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位:定时任务框架 作用:定时自动执行某段Java代码 什么是定时任务 ? 通过时…

IDEA连接Github⭐️使用Git工具上传本地文件到远程仓库

环境准备 已安装IDEA开发工具,Git版本管理工具,已注册GitHub账号 需要先准备好这些环境,可以自行搜索教程,下面的安装是基于这里的环境上操作的 目录 一、需要提供SSH公钥 ​二、Github配置SSH公钥 ​三、IDEA配置连接 四、连…

微信小程序分销商城在线搭建源码系统:轻松无忧 带完整的安装部署教程

随着移动互联网的快速发展,微信小程序作为一种新的应用形态,已经深入到人们生活的方方面面。尤其在电商领域,微信小程序分销商城为商家提供了一种全新的销售渠道。然而,对于许多不具备技术背景的商家来说,如何快速搭建…

Flutter-Web从0到部署上线(实践+埋坑)

本文字数:7743字 预计阅读时间:60分钟 01 前言 首先说明一下,这篇文章是给具备Flutter开发经验的客户端同学看的。Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOS&#xff…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域,除了常见的XSS(跨站脚本)攻击外,CSRF(跨站请求伪造)攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下,执行非授权的操作。了解CSRF攻击的机…

ASP.NET Core列表增删改查

前置要求&#xff1a; 1. vueelement-plus实现前端静态页面 HelloWorld.vue <template><h2>hello界面</h2><div class"tableList"><!-- 搜索框 --><el-row :gutter"20"><el-col :span"8"><!-- 搜…

科研绘图(八)线性热图

线性热图&#xff08;Linear Heat Map&#xff09;是一种数据可视化技术&#xff0c;用于展示数值在一维线性空间上的分布情况。它通常用于展示沿着一条线&#xff08;例如时间线或任何一维序列&#xff09;的数据密度或强度变化。线性热图与传统的二维热图不同&#xff0c;后者…

day2·算法-快乐数-有效三角形个数

今天又来更新啦&#xff0c;准备蓝桥杯的小伙伴可以和我一起来刷题&#xff0c;建议大家先看题&#xff0c;整理出思路&#xff0c;再看如何用简单的写法将思路构建出来&#xff0c;然后优化细节&#xff0c;找到解决某些例外出现的方法&#xff0c;从而成功解答这道题。 快乐…

adb wifi 远程调试 安卓手机 命令

使用adb wifi 模式调试需要满足以下前提条件&#xff1a; 手机 和 PC 需要在同一局域网下。手机需要开启开发者模式&#xff0c;然后打开 USB 调试模式。 具体操作步骤如下&#xff1a; 将安卓手机通过 USB 线连接到 PC。&#xff08;连接的时候&#xff0c;会弹出请求&#x…

深入探索CSS动画的魅力-附带动画实例

一、网页动画发展简史 GIF动画 GIF全称为“Graphics Interchange Format”&#xff0c;是一种基于LZW算法的连续色调无损压缩格式。 由于其文件小、无损压缩、易于播放等优点&#xff0c;GIF成为了网页动画的最初选择。然而&#xff0c;GIF动画的色彩数量和帧数有限&#xff…