一、Spring Boot 3.0
1、介紹
Spring Boot 3.0 是 Spring Boot 框架的一個(gè)重要版本,它在保持了 Spring Boot 的一貫優(yōu)點(diǎn)的同時(shí),也進(jìn)行了一些重要的改進(jìn)和更新。
首先,Spring Boot 3.0 對(duì) Java 版本的要求進(jìn)行了更新。這個(gè)版本要求使用 Java 17 作為最低版本,以利用最新的語(yǔ)言特性和性能改進(jìn)。如果你正在使用的是 Java 8 或 Java 11,則需要先升級(jí) JDK 版本,然后再開發(fā) Spring Boot 3.0 應(yīng)用程序。
其次,Spring Boot 3.0 對(duì) Spring Framework 的版本也進(jìn)行了更新。這個(gè)版本要求使用 Spring Framework 6.0.2 或更高版本。Spring Framework 的新版本進(jìn)行了一些特性的改進(jìn),包括 WebFlux 的改進(jìn)、更好的性能和可擴(kuò)展性。
此外,Spring Boot 3.0 還進(jìn)行了一些非功能特性的改進(jìn),例如對(duì)嵌入式服務(wù)器、安全、度量、健康檢查和外部化配置等特性的支持。這些改進(jìn)可以幫助開發(fā)者更方便地構(gòu)建和管理應(yīng)用程序。
另外,Spring Boot 3.0 還對(duì)一些底層依賴項(xiàng)進(jìn)行了更新。這個(gè)版本將所有底層依賴項(xiàng)從 Java EE 遷移到了 Jakarta EE API,基于 Jakarta EE 9 并盡可能地兼容 Jakarta EE 10。這一改變可以幫助開發(fā)者更好地利用最新的技術(shù)棧,并提高應(yīng)用程序的兼容性和可維護(hù)性。
最后,Spring Boot 3.0 還進(jìn)行了一些性能和安全性的優(yōu)化。這個(gè)版本通過(guò)一系列的性能優(yōu)化措施,提高了應(yīng)用程序的運(yùn)行效率,滿足了高并發(fā)、低延遲的應(yīng)用需求。同時(shí),也引入了更多的安全特性,如 OAuth2、JWT 等,增強(qiáng)了應(yīng)用程序的安全性。
總的來(lái)說(shuō),Spring Boot 3.0 是一個(gè)非常值得關(guān)注的版本。它通過(guò)改進(jìn)和更新,進(jìn)一步簡(jiǎn)化了開發(fā)過(guò)程、提高了應(yīng)用程序的性能和安全性,滿足了當(dāng)前軟件開發(fā)領(lǐng)域的需求。
2、Spring Boot 核心概念
-
自動(dòng)配置:Spring Boot自動(dòng)配置機(jī)制旨在根據(jù)項(xiàng)目中添加的依賴自動(dòng)配置Spring應(yīng)用程序。這減少了需要編寫的配置代碼和XML配置。
-
起步依賴(Starters):起步依賴是一組便捷的依賴描述符,它們可以包含在應(yīng)用程序中,并提供所需的依賴項(xiàng)集合,簡(jiǎn)化構(gòu)建配置。
-
命令行接口:Spring Boot提供了一個(gè)命令行工具,用于快速開發(fā)和運(yùn)行Spring應(yīng)用程序。
-
Actuator:Spring Boot Actuator提供了一組生產(chǎn)準(zhǔn)備特性,幫助你監(jiān)控和管理應(yīng)用程序。
-
內(nèi)置容器支持:Spring Boot提供了嵌入式HTTP服務(wù)器的支持,如Tomcat、Jetty和Undertow,無(wú)需部署WAR文件。
-
配置管理:Spring Boot提供了強(qiáng)大的配置管理能力,可以通過(guò)properties或YAML文件、環(huán)境變量和命令行參數(shù)來(lái)管理。
-
日志管理:Spring Boot內(nèi)置了日志配置,提供了多種日志框架的支持。
-
安全:Spring Boot整合了Spring Security,提供了強(qiáng)大的安全性支持。
-
數(shù)據(jù)訪問(wèn):Spring Boot簡(jiǎn)化了數(shù)據(jù)訪問(wèn)技術(shù)(如JDBC、JPA、Hibernate)的配置和使用。
-
測(cè)試:提供了豐富的測(cè)試工具,簡(jiǎn)化了單元和集成測(cè)試的過(guò)程。
-
云原生支持:為構(gòu)建云原生應(yīng)用程序提供支持,包括與Spring Cloud的集成,以及對(duì)微服務(wù)架構(gòu)的支持。
-
響應(yīng)式編程:從Spring Framework 5開始,Spring Boot支持響應(yīng)式編程模型,適用于構(gòu)建響應(yīng)式系統(tǒng)。
-
國(guó)際化和本地化:提供對(duì)多語(yǔ)言和地區(qū)設(shè)置的支持,簡(jiǎn)化國(guó)際化應(yīng)用的開發(fā)。
-
開發(fā)者工具:提供了一系列的開發(fā)者工具,如熱部署、默認(rèn)配置和應(yīng)用狀態(tài)檢查,以提高開發(fā)效率。
-
事件和監(jiān)聽器:支持使用事件和監(jiān)聽器模式,以實(shí)現(xiàn)不同組件間的松耦合通信。
3、Spring Boot 3.0 新特性
Spring Boot 3.0,于2022年11月發(fā)布,相較于其前身Spring Boot 2.0,引入了多項(xiàng)重大改變和改進(jìn)。以下是Spring Boot 3.0的主要特性和變化概覽:
-
Java 17作為基礎(chǔ)并支持Java 19:Spring Boot 3.0要求至少使用Java 17,并且與Java 19兼容,因此不適用于運(yùn)行在JDK 8或11上的項(xiàng)目。
-
遷移到Jakarta EE 9:從Java EE轉(zhuǎn)向Jakarta EE 9是一個(gè)重大變化。這個(gè)轉(zhuǎn)變包括將Java EE類的命名空間從
javax.*
改為jakarta.*
,這需要在代碼導(dǎo)入中相應(yīng)地進(jìn)行更新。 -
Log4j2增強(qiáng)功能:Spring Boot 3.0引入了新的Log4j2特性,例如特定于配置文件的配置、環(huán)境屬性查找以及對(duì)眾多系統(tǒng)屬性的支持。
-
Micrometer和Micrometer Tracing的可觀察性:新版本整合了基于Micrometer和Micrometer追蹤的Spring Observability,增強(qiáng)了應(yīng)用度量記錄并提供了追蹤支持。
-
GraalVM原生映像功能:一個(gè)值得注意的新增功能是對(duì)將應(yīng)用程序轉(zhuǎn)換為GraalVM原生映像的支持,這可以帶來(lái)更快的啟動(dòng)時(shí)間和減少的內(nèi)存消耗。
-
依賴項(xiàng)升級(jí):Spring Boot 3.0包括對(duì)多個(gè)Spring項(xiàng)目(如Spring Integration、Spring Security、Spring AMQP等)以及第三方庫(kù)(如Hibernate Validator、Jackson、Jetty和Tomcat等)的升級(jí)。
-
改進(jìn)的可觀察性:新版本支持Micrometer 1.10中引入的觀察API,包括用于創(chuàng)建觀察的ObservationRegistry接口
這些變化強(qiáng)調(diào)了Spring Boot框架的重要演變,專注于現(xiàn)代Java標(biāo)準(zhǔn)、提升性能和改進(jìn)的可觀察性功能。從早期版本,特別是Spring Boot 2.0,升級(jí)到Spring Boot 3.0將需要仔細(xì)考慮這些變化,特別是Java和Jakarta EE版本要求和依賴項(xiàng)更新。
二、Spring Boot Starter
1、介紹
Spring Boot Starter是Spring Boot中的一個(gè)重要概念,它簡(jiǎn)化了Spring應(yīng)用程序的初始化和開發(fā)過(guò)程。以下是Spring Boot Starter的主要作用和特點(diǎn):
- 整合依賴:Spring Boot Starter將與特定功能相關(guān)的依賴整合在一起,使得開發(fā)者只需要在項(xiàng)目中引入相應(yīng)的Starter,就可以快速地使用該功能。這大大簡(jiǎn)化了依賴管理和配置過(guò)程。
- 自動(dòng)配置:Spring Boot Starter提供了自動(dòng)配置功能,可以根據(jù)項(xiàng)目中的依賴和環(huán)境自動(dòng)完成配置。這避免了手動(dòng)配置的繁瑣和易錯(cuò)性,使得開發(fā)者能夠更加專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。Starter自動(dòng)配置了大部分常用場(chǎng)景的默認(rèn)行為,這樣開發(fā)者就無(wú)需手動(dòng)設(shè)置。例如,添加了數(shù)據(jù)庫(kù)相關(guān)的Starter后,Spring Boot會(huì)自動(dòng)配置數(shù)據(jù)庫(kù)連接和對(duì)象關(guān)系映射(ORM)
- 簡(jiǎn)化開發(fā):通過(guò)Spring Boot Starter,開發(fā)者可以快速地構(gòu)建出獨(dú)立、可運(yùn)行的、生產(chǎn)級(jí)別的Spring應(yīng)用程序。它提供了大量預(yù)設(shè)的配置和功能,使得開發(fā)者無(wú)需從零開始搭建應(yīng)用程序。
- 可擴(kuò)展性:Spring Boot Starter不僅簡(jiǎn)化了開發(fā)過(guò)程,同時(shí)也為應(yīng)用程序的擴(kuò)展提供了便利。它提供了可擴(kuò)展的接口和機(jī)制,使得開發(fā)者可以根據(jù)需要添加或修改配置項(xiàng)。
總之,Spring Boot Starter為開發(fā)者提供了一種快速、簡(jiǎn)便的方式來(lái)構(gòu)建和開發(fā)Spring應(yīng)用程序,它簡(jiǎn)化了依賴管理、自動(dòng)配置、默認(rèn)配置和可擴(kuò)展性等方面的問(wèn)題,使得開發(fā)者能夠更加高效地開發(fā)出高質(zhì)量的應(yīng)用程序。
2、Starter 命名規(guī)則
所有的官方啟動(dòng)器都遵循類似的命名模式:spring-boot-starter-*
,其中*
代表特定類型的應(yīng)用程序。這種命名結(jié)構(gòu)有助于你在需要查找啟動(dòng)器時(shí)進(jìn)行查找。許多IDE中的Maven集成可以讓你按名稱搜索依賴項(xiàng)。例如,安裝了適當(dāng)?shù)腅clipse或Spring Tools插件后,你可以在POM編輯器中按ctrl-space
鍵,然后輸入“spring-boot-starter”以獲取完整列表。
如“創(chuàng)建自己的啟動(dòng)器”部分所述,第三方啟動(dòng)器不應(yīng)該以spring-boot開頭,因?yàn)檫@是為官方Spring Boot工件保留的。相反,第三方啟動(dòng)器通常以項(xiàng)目的名稱開頭。例如,名為thirdpartyproject
的第三方啟動(dòng)器項(xiàng)目通常命名為thirdpartyproject-spring-boot-starter
。
3、官方提供了哪些Starter
參考 https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
以下應(yīng)用程序啟動(dòng)器由Spring Boot在org.springframework.boot組下提供:
名稱 | 描述 |
---|---|
spring-boot-starter | 包括自動(dòng)配置支持、日志和YAML的核心啟動(dòng)器 |
spring-boot-starter-activemq | 使用Apache ActiveMQ進(jìn)行JMS消息傳遞的啟動(dòng)器 |
spring-boot-starter-amqp | 使用Spring AMQP和Rabbit MQ的啟動(dòng)器 |
spring-boot-starter-aop | 使用Spring AOP和AspectJ進(jìn)行面向切面編程的啟動(dòng)器 |
spring-boot-starter-artemis | 使用Apache Artemis進(jìn)行JMS消息傳遞的啟動(dòng)器 |
spring-boot-starter-batch | 使用Spring Batch的啟動(dòng)器 |
spring-boot-starter-cache | 使用Spring Framework的緩存支持的啟動(dòng)器 |
spring-boot-starter-data-cassandra | 使用Cassandra分布式數(shù)據(jù)庫(kù)和Spring Data Cassandra的啟動(dòng)器 |
spring-boot-starter-data-cassandra-reactive | 使用Cassandra分布式數(shù)據(jù)庫(kù)和Spring Data Cassandra Reactive的啟動(dòng)器 |
spring-boot-starter-data-couchbase | 使用Couchbase文檔導(dǎo)向數(shù)據(jù)庫(kù)和Spring Data Couchbase的啟動(dòng)器 |
spring-boot-starter-data-couchbase-reactive | 使用Couchbase文檔導(dǎo)向數(shù)據(jù)庫(kù)和Spring Data Couchbase Reactive的啟動(dòng)器 |
spring-boot-starter-data-elasticsearch | 使用Elasticsearch搜索和分析引擎和Spring Data Elasticsearch的啟動(dòng)器 |
spring-boot-starter-data-jdbc | 使用Spring Data JDBC的啟動(dòng)器 |
spring-boot-starter-data-jpa | 使用Spring Data JPA和Hibernate的啟動(dòng)器 |
spring-boot-starter-data-ldap | 使用Spring Data LDAP的啟動(dòng)器 |
spring-boot-starter-data-mongodb | 使用MongoDB文檔導(dǎo)向數(shù)據(jù)庫(kù)和Spring Data MongoDB的啟動(dòng)器 |
spring-boot-starter-data-mongodb-reactive | 使用MongoDB文檔導(dǎo)向數(shù)據(jù)庫(kù)和Spring Data MongoDB Reactive的啟動(dòng)器 |
spring-boot-starter-data-neo4j | 使用Neo4j圖數(shù)據(jù)庫(kù)和Spring Data Neo4j的啟動(dòng)器 |
spring-boot-starter-data-r2dbc | 使用Spring Data R2DBC的啟動(dòng)器 |
spring-boot-starter-data-redis | 使用Redis鍵值數(shù)據(jù)存儲(chǔ)、Spring Data Redis和Lettuce客戶端的啟動(dòng)器 |
spring-boot-starter-data-redis-reactive | 使用Redis鍵值數(shù)據(jù)存儲(chǔ)、Spring Data Redis reactive和Lettuce客戶端的啟動(dòng)器 |
spring-boot-starter-data-rest | 使用Spring Data REST和Spring MVC展示Spring Data倉(cāng)庫(kù)的啟動(dòng)器 |
spring-boot-starter-freemarker | 使用FreeMarker視圖構(gòu)建MVC Web應(yīng)用的啟動(dòng)器 |
spring-boot-starter-graphql | 使用Spring GraphQL構(gòu)建GraphQL應(yīng)用的啟動(dòng)器 |
spring-boot-starter-groovy-templates | 使用Groovy Templates視圖構(gòu)建MVC Web應(yīng)用的啟動(dòng)器 |
spring-boot-starter-hateoas | 使用Spring MVC和Spring HATEOAS構(gòu)建基于超媒體的RESTful Web應(yīng)用的啟動(dòng)器 |
spring-boot-starter-integration | 使用Spring Integration的啟動(dòng)器 |
spring-boot-starter-jdbc | 使用HikariCP連接池的JDBC的啟動(dòng)器 |
spring-boot-starter-jersey | 使用JAX-RS和Jersey構(gòu)建RESTful Web應(yīng)用的啟動(dòng)器,是spring-boot-starter-web的替代品 |
spring-boot-starter-jooq | 使用jOOQ訪問(wèn)SQL數(shù)據(jù)庫(kù)的啟動(dòng)器,是spring-boot-starter-data-jpa或spring-boot-starter-jdbc的替代品 |
spring-boot-starter-json | 用于讀寫json的啟動(dòng)器 |
spring-boot-starter-mail | 使用Java Mail和Spring Framework的郵件發(fā)送支持的啟動(dòng)器 |
spring-boot-starter-mustache | 使用Mustache視圖構(gòu)建Web應(yīng)用的啟動(dòng)器 |
spring-boot-starter-oauth2-authorization-server | 使用Spring Authorization Server功能的啟動(dòng)器 |
spring-boot-starter-oauth2-client | 使用Spring Security的OAuth2/OpenID Connect客戶端功能的啟動(dòng)器 |
spring-boot-starter-oauth2-resource-server | 使用Spring Security的OAuth2資源服務(wù)器功能的啟動(dòng)器 |
spring-boot-starter-pulsar | 使用Spring for Apache Pulsar的啟動(dòng)器 |
spring-boot-starter-pulsar-reactive | 使用Spring for Apache Pulsar Reactive的啟動(dòng)器 |
spring-boot-starter-quartz | 使用Quartz調(diào)度器的啟動(dòng)器 |
spring-boot-starter-rsocket | 構(gòu)建RSocket客戶端和服務(wù)器的啟動(dòng)器 |
spring-boot-starter-security | 使用Spring Security的啟動(dòng)器 |
spring-boot-starter-test | 測(cè)試Spring Boot應(yīng)用的啟動(dòng)器,包括JUnit Jupiter、Hamcrest和Mockito等庫(kù) |
spring-boot-starter-thymeleaf | 使用Thymeleaf視圖構(gòu)建MVC Web應(yīng)用的啟動(dòng)器 |
spring-boot-starter-validation | 使用Hibernate Validator進(jìn)行Java Bean驗(yàn)證的啟動(dòng)器 |
spring-boot-starter-web | 構(gòu)建Web應(yīng)用(包括RESTful應(yīng)用)的啟動(dòng)器,使用Spring MVC,默認(rèn)嵌入Tomcat容器 |
spring-boot-starter-web-services | 使用Spring Web Services的啟動(dòng)器 |
spring-boot-starter-webflux | 使用Spring Framework的Reactive Web支持構(gòu)建WebFlux應(yīng)用的啟動(dòng)器 |
spring-boot-starter-websocket | 使用Spring Framework的MVC WebSocket支持構(gòu)建WebSocket應(yīng)用的啟動(dòng)器 |
三、spring-boot-starter-parent 說(shuō)明
Spring Boot Starter Parent是一個(gè)特殊的starter,它定義了一個(gè)Spring Boot項(xiàng)目的父工程。它提供了很多默認(rèn)的配置,這些配置可以大大簡(jiǎn)化我們的開發(fā)。
具體來(lái)說(shuō),Spring Boot Starter Parent主要做了以下事情:
- 定義了Java編譯版本為1.8
- 使用UTF-8格式編碼
- 繼承自spring-boot-dependencies,這個(gè)里邊定義了依賴的版本,也正是因?yàn)槔^承了這個(gè)依賴,所以我們?cè)趯懸蕾嚂r(shí)才不需要寫版本號(hào)。
- 執(zhí)行打包操作的配置。
- 自動(dòng)化的資源過(guò)濾。
- 自動(dòng)化的插件配置。
- 針對(duì)application.properties和application.yml的資源過(guò)濾,包括通過(guò)profile定義的不同環(huán)境的配置文件,例如application-dev.properties和application-dev.yml。
盡管Java 17是Spring Boot 3.0的最低要求版本,但spring-boot-starter-parent將Java編譯版本定義為1.8可能是為了保持與現(xiàn)有Spring Boot應(yīng)用程序和庫(kù)的兼容性,以及為了提供更好的社區(qū)支持和長(zhǎng)期維護(hù)。
總之,Spring Boot Starter Parent是一個(gè)非常重要的依賴管理工具,它為Spring Boot項(xiàng)目提供了一系列的默認(rèn)配置和功能,使得開發(fā)者能夠更加高效地開發(fā)出高質(zhì)量的應(yīng)用程序。
四、示例:創(chuàng)建web項(xiàng)目
打開集成開發(fā)工具 IDEA,依次選擇 File -> New -> Project
1、左邊選擇菜單Spring Initializr
輸入工程名稱
2、輸入Group、Artifact、以及 Package name
3、JDK 選擇 17版本
4、點(diǎn)擊下一步,選擇需要的組件(Lombok、Spring Web)
5、點(diǎn)擊按鈕“Create”
創(chuàng)建完成后,工程結(jié)構(gòu)大致如下:
6、創(chuàng)建測(cè)試Controller,放在controller包中
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
7、執(zhí)行啟動(dòng)類Application.java
,啟動(dòng)完成后在瀏覽器中輸入 http://localhost:8080/hello
即可看見測(cè)試輸出
完整工程結(jié)構(gòu)示例圖:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-798997.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-798997.html
參考
- Spring Boot Reference Documentation
- Spring Boot Starters
到了這里,關(guān)于【SpringBoot3】Spring Boot 3.0 介紹以及新特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!