Spring Boot 又接連發(fā)布了三個版本:
Spring Boot 2.7.0(最新)
Spring Boot 2.6.8
Spring Boot 2.5.14
后面兩個版本都是修復 bug 版本,2.7.0 才是硬菜,畢竟等了大半年。。
老規(guī)矩,棧長重點來解讀下 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 雖然現在被標識廢棄了,但現在仍然可以使用,后續(xù)可能被徹底刪除,建議使用新的規(guī)范。
java 項目 fhadmin.cn
新注解(@AutoConfiguration)
新增了一個自動配置注解?@AutoConfiguration,用來代替之前的?@Configuration,用于標識新自動配置注冊文件中的頂級自動配置類,由?@AutoConfiguration?注解嵌套、導入進來的其他配置類可以繼續(xù)使用?@Configuration?注解。
另外,為方便起見,@AutoConfiguration?注解還支持?after,?afterNames,?before?和?beforeNames?屬性進行自動配置排序,用于代替之前的?@AutoConfigureAfter?和?@AutoConfigureBefore?注解。
這個注解可以說更加細分了吧,自動配置專用注解,用專門的注解來干專門的事,這樣也可以用來區(qū)分用?@Configuration?標識的普通配置類。
支持 GraphQL
GraphQL = Graph + QL(Query Language),它是一種用于 API 的基于圖表化的查詢語言:
Spring for GraphQL(1.0) 如今正式發(fā)布了,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 的最新版本支持情況:
版本發(fā)布時間停止維護時間停止商業(yè)支持
2.7.02022-05-192023-05-182024-08-22
2.6.02021-12-172022-11-242024-02-24
2.5.x2021-05-20已停止2023-08-24
2.4.x2020-11-12已停止2023-02-23
2.3.x2020-05-15已停止2022-08-20
2.2.x2019-10-16已停止已停止
2.1.x2018-10-10已停止已停止
2.0.x2018-03-01已停止已停止
1.5.x2017-01-30已停止已停止
大部分版本要么停止維護,或者僅提供商業(yè)支持,隨著 2.7 的發(fā)布,現在連 Spring Boot 2.5 也停止維護了:
能用的也就 Spring Boot 2.6 及以上的版本了,并且,Spring Boot 2.6.0 在今年 11/24 也會停止維護。。
總結
Spring Boot 2.7.0 新增了不少新特性,變化真的還挺大的,特別是自動配置的變更,有明顯調整,大家要特別注意。
Spring Boot 現在已經成為了實事上的腳手架框架了,讓學習和開發(fā)變得更簡單,同時這版本的淘汰節(jié)奏也讓我感覺技術更新實在太快了,所以我們也要不斷保持學習,不然也會跟著淘汰。