一些必須提前知道的概念 patition kafka日誌文件是以patition在物理存儲上分割的 是topic物理上的分組,一個topic可以分為多個partition,每個partition是一個有序的隊列 是以文件夾的形式存儲在具體Broker本機上 LEO 表示每個partition的log ...
Spring Boot 又接連發佈了三個版本:
- Spring Boot 2.7.0(最新)
- Spring Boot 2.6.8
- Spring Boot 2.5.14
後面兩個版本都是修複 bug 版本,2.7.0 才是硬菜,畢竟等了大半年。。
老規矩,棧長重點來解讀下 Spring Boot 2.7.0 都更新了什麼鬼!
Spring Boot 2.7 新特性
自動配置變更(重要)
自動配置註冊文件
自動配置註冊有了一個比較大的調整,之前都是寫在下麵 文件中的:
META-INF/spring.factories
現在改名了:
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
另外格式也變了,Spring Boot 2.7 中直接每一行是一個自動配置類:
編寫格式確實是比之前方便多了,但文件名確實也太長了,比較難記。。。
需要註意的是:
為了向後相容,META-INF/spring.factories 雖然現在被標識廢棄了,但現在仍然可以使用,後續可能被徹底刪除,建議使用新的規範。
java 項目 fhadmin.cn
新註解(@AutoConfiguration)
新增了一個自動配置註解 @AutoConfiguration
,用來代替之前的 @Configuration
,用於標識新自動配置註冊文件中的頂級自動配置類,由 @AutoConfiguration
註解嵌套、導入進來的其他配置類可以繼續使用 @Configuration
註解。
另外,為方便起見,@AutoConfiguration
註解還支持 after
, afterNames
, before
和 beforeNames
屬性進行自動配置排序,用於代替之前的 @AutoConfigureAfter
和 @AutoConfigureBefore
註解。
這個註解可以說更加細分了吧,自動配置專用註解,用專門的註解來乾專門的事,這樣也可以用來區分用 @Configuration
標識的普通配置類。
支持 GraphQL
GraphQL = Graph + QL(Query Language),它是一種用於 API 的基於圖表化的查詢語言:
Spring for GraphQL(1.0) 如今正式發佈了,Spring Boot 2.7.0 也集成了對 GraphQL 的自動配置、指標支持等,Starter 名為:spring-boot-starter-graphql
,Spring 大家族又新增一員。
支持 Podman
Podman 和 Docker 一樣,是現在比較火熱的容器引擎。
現在使用 Cloud Native Buildpacks 構建映像時,Maven 和 Gradle 插件就可以使用 Podman 容器引擎進行構建了,可用來代替 Docker 容器引擎。
牛逼啊,Podman 現在被 Spring Boot 官方支持了。
支持 RabbitStreamTemplate
現在支持自動配置 RabbitStreamTemplate,只需要配置以下參數:
spring.rabbitmq.stream.name = xxx
同時還新增了一個 RabbitStreamTemplateConfigurer
配置類來進行自定義擴展其他實例。
支持 Hazelcast
Hazelcast 和 Redis 一樣,它是一款開源的分散式記憶體資料庫,可用作分散式緩存。
Hazelcast 自動配置嵌入式伺服器現在預設使用了 SpringManagerContext
,可以在 Hazelcast 實例對象中註入 Spring Bean 了。另外,還引入了 HazelcastConfigCustomizer
回調介面,可用於進一步調整 Hazelcast 伺服器配置。
支持 Cache2k
Cache2k 是一個開源的輕量級、高性能 Java 記憶體緩存庫。
現在添加了 Cache2k
的依賴項管理和自動配置,也可以通過定義一個 Cache2kBuilderCustomizer
實例 Bean 來自定義預設緩存設置。
Web Server SSL 增強
嵌入式 Web 伺服器 SSL 配置增強了,可以配置帶有 PEM 編碼證書和私鑰文件的 SSL。
使用以下參數進行配置:
- server.ssl.certificate
- server.ssl.certificate-private-key
- server.ssl.trust-certificate(可選)
- server.ssl.trust-certificate-private-key(可選)
另外,也可以使用類似的 management.server.ssl.*
屬性來保護管理端點。
info 端點增強
操作系統信息
現在 /info
端點支持暴露應用程式運行時的一些操作系統信息:
{
"os": {
"name": "Linux",
"version": "5.4.0-1051-gke",
"arch": "amd64"
}
}
不過預設是禁用的,有需要的可以手動開啟:
management.info.os.enabled = true
Java 供應商信息
現在 /info
端點中的 Java 供應商添加了供應商版本信息:
{
"java": {
"vendor": {
"name": "Eclipse Adoptium",
"version": "Temurin-17.0.1+12"
},
"..."
}
需要註意的是: 並非所有供應商都公開 java.vendor.version
系統屬性,所以,獲取版本屬性時可能為空。
單元測試加強
新增了 @DataCouchbaseTest
和 DataElasticsearchTest
註解,可用於測試使用了 Spring Data Couchbase 和 Spring Data Elasticsearch 的應用程式。
最新支持版本
棧長整理了 Spring Boot 的最新版本支持情況:
版本 | 發佈時間 | 停止維護時間 | 停止商業支持 |
---|---|---|---|
2.7.0 | 2022-05-19 | 2023-05-18 | 2024-08-22 |
2.6.0 | 2021-12-17 | 2022-11-24 | 2024-02-24 |
2.5.x | 2021-05-20 | 已停止 | 2023-08-24 |
2.4.x | 2020-11-12 | 已停止 | 2023-02-23 |
2.3.x | 2020-05-15 | 已停止 | 2022-08-20 |
2.2.x | 2019-10-16 | 已停止 | 已停止 |
2.1.x | 2018-10-10 | 已停止 | 已停止 |
2.0.x | 2018-03-01 | 已停止 | 已停止 |
1.5.x | 2017-01-30 | 已停止 | 已停止 |
大部分版本要麼停止維護,或者僅提供商業支持,隨著 2.7 的發佈,現在連 Spring Boot 2.5 也停止維護了:
能用的也就 Spring Boot 2.6 及以上的版本了,並且,Spring Boot 2.6.0 在今年 11/24 也會停止維護。。
總結
Spring Boot 2.7.0 新增了不少新特性,變化真的還挺大的,特別是自動配置的變更,有明顯調整,大家要特別註意。
Spring Boot 現在已經成為了實事上的腳手架框架了,讓學習和開發變得更簡單,同時這版本的淘汰節奏也讓我感覺技術更新實在太快了,所以我們也要不斷保持學習,不然也會跟著淘汰。