Spring boot各版本特性

以下供技術(shù)升級(jí)所使用。建議使用2.3.x或2.4.x。

一、Spring boot各版本特性

2.2.X

  • 性能提升
    • 默認(rèn)禁用JMX: 縮短應(yīng)用啟動(dòng)時(shí)間,減少資源浪費(fèi)。
    • 延遲初始化:通過spring.main.lazy-initialization屬性啟用全局延遲初始化,以減少啟動(dòng)時(shí)間
    • 禁用其他JPA掃描改善了啟動(dòng)性能:SpringBoot已提供了自己的JPA掃描。
    • 大型配置文件綁定更快
    • 更高效的bean創(chuàng)建和注入
  • 支持Java 13
  • @ConfigurationProperties注解的類被初始化為bean
  • RSocket支持
  • 支持Gradle 6
  • 支持第三方類上的構(gòu)造器參數(shù)綁定
  • 依賴變化:
    • 所有JavaEE依賴項(xiàng)用等效的Jakarta EE依賴替換。
    • Spring Framework 5.2
    • JUnit 5
    • 其它依賴包升級(jí)
  • 配置更改:如
    • logging.file屬性已重命名為logging.file.name
    • logging.path屬性已重命名為logging.file.path

2.3.X

  • 優(yōu)雅停機(jī):在關(guān)閉時(shí),服務(wù)器將不再允許新的請(qǐng)求,并將等待完成的請(qǐng)求給個(gè)寬限期讓它完成,可以通過spring.lifecycle.timeout-per-shutdown-phase=xxx來配置,默認(rèn)為30s, 默認(rèn)情況下,沒有開啟,通過添加server.shutdown=graceful配置開啟。
  • 配置屬性的調(diào)整:可通過spring-boot-properties-migrator依賴打印替換日志
  • 刪除不推薦使用的類/方法/屬性
  • 配置文件位置支持通配符:如/config/*/,只支持jar包外
  • web下的日期轉(zhuǎn)換支持配置:
    • spring.mvc.format.date
    • spring.mvc.format.date-time
    • spring.mvc.format.time
    • spring.webflux.format.date
    • spring.webflux.format.date-time
    • spring.webflux.format.time
  • 依賴升級(jí)
    • 核心依賴升級(jí):
    • 第三方類庫升級(jí):
  • 支持Java 14
  • 嵌入式Servlet Web Server線程配置:server.xx.threads.max
  • WebFlux基礎(chǔ)路徑配置:支持spring.webflux.base-path=xx
  • 服務(wù)可用性探針:management.health.probes.enabled=true
  • Actuator增強(qiáng):
  • docker容器支持:
    • 支持Cloud Native Buildpacks構(gòu)建鏡像
    • maven 插件 增加 spring-boot:build-image 、gradle增加bootBuildImage task 幫助快速構(gòu)建鏡像
    • 支持jar 分層,更好的優(yōu)化打包鏡像過程

2.4.X

  • 版本命名更改:去除了RELEASE后綴
  • 支持Java 15
  • Junit 5移除了Vintage Engine
  • 配置數(shù)據(jù)導(dǎo)入:通過spring.config.locationspring.config.import明確指定配置位置,如果不存在,則不會(huì)靜默失敗,如果想忽略不存在,則在前面加optional,如:spring.config.location=optional:/etc/config/application.properties,如果想把所有位置都當(dāng)作optional,可以設(shè)置spring.config.on-not-found=ignore
  • 嵌入數(shù)據(jù)庫改進(jìn):只有在內(nèi)存中才認(rèn)為數(shù)據(jù)庫是嵌入式的。
  • 不再注冊(cè)servlet容器提供的DefaultServlet
  • HTTP traces不再包含Cookie請(qǐng)求頭和Set-Cookie響應(yīng)頭
  • 構(gòu)建jar自動(dòng)優(yōu)化,自動(dòng)刪除空的starter
  • 全新的cron定時(shí)任務(wù)支持:@yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly
  • 依賴升級(jí):
    • Spring Framework 5.3
    • Spring Kafka 2.6
    • 第三方依賴升級(jí)
      • Undertow 2.2
      • Lettuce 6.0
      • JUnit 5.7
  • Docker支持升級(jí):
    • 鏡像發(fā)布:Spring Boot Maven 插件的 spring-boot:build-image 指令和 Gradle 插件的 bootBuildImage 任務(wù)現(xiàn)在可以直接發(fā)布 Docker 鏡像到 Docker 注冊(cè)中心了
    • 授權(quán)機(jī)制:使用私有授權(quán)的 Docker 私有注冊(cè)中心,支持用戶名/密碼認(rèn)證以及基于 Token 機(jī)制認(rèn)證。
    • 默認(rèn)支持分層jar,減少容器鏡像構(gòu)建

2.5.X

  • 運(yùn)行端點(diǎn)變更
    • /info不再對(duì)外公開
    • 優(yōu)雅關(guān)機(jī)支持GET請(qǐng)求
    • 記錄停機(jī)日志
    • 增加Quartz的Actuator Endpoint: /actuator/quartz
  • 增強(qiáng)容器化功能
    • war包支持分層
    • buildpack支持配置自定義
  • Environment前綴:以便在同一環(huán)境運(yùn)行多個(gè)不同的應(yīng)用,使用SpringApplication.setEnvironmentPrefix(…)設(shè)置綁定屬性時(shí)要使用的前綴。
  • Metrics增強(qiáng)
  • HTTP/2 over TCP(h2c): 只需將server.http2.enabled設(shè)置為 true并將 server.ssl.enabled設(shè)置為false(默認(rèn) false)。微服務(wù)全棧 h2c 還需要打通 feign 和 RestTemplate 這種 http 客戶端
  • 數(shù)據(jù)源相關(guān)增強(qiáng):

二、細(xì)節(jié)

優(yōu)雅停機(jī)

其生效,但其觸發(fā)后,不再接收新請(qǐng)求,在使用slb時(shí)比較方便,但使用eureka時(shí),該方式仍然不夠優(yōu)雅,因?yàn)槠渌?wù)仍然能看到該服務(wù),但該服務(wù)又不可用。

其只解決了當(dāng)前請(qǐng)求完整性

版本支持時(shí)間

  • 2.4.x: 支持的版本。2020.11發(fā)布,支持到2022.08
  • 2.3.x: 支持的版本。2020.05發(fā)布,支持到2022.02
  • 2.2.x:支持的版本。2019.10發(fā)布,支持到2021.07
  • 2.1.x:生命已終止的版本。2018.10發(fā)布,于到2020.10月停止維護(hù)
  • 2.0.x:生命已終止的版本。2018.3發(fā)布,2019.4停止維護(hù)
  • 1.5.x:生命已終止的版本。2017.1發(fā)布,是最后一個(gè)1.x分支,2019.8.1停止維護(hù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容