Spring Framework 釋出 5.3.11 和 5.2.18 正式版

2021-10-16 13:00:10

一、釋出說明

北京時間10月15日,Spring Framework推出 5.3.11  5.2.18 兩個新版本。Spring Framework5.3.11包括。Spring Framework5.2.18包括

隨著越來越多的人使用Spring Boot 逐漸忽略了Spring Framework的關注,其實兩者的關係密不可分,對Spring Boot 如果想要能研究得更深入,那麼,就需要對Spring Framework有更足夠的瞭解和應用。

在這裡插入圖片描述

二、介紹Spring Framework

Spring 使建立 Java 企業應用程式變得容易。它提供了在企業環境中使用 Java 語言所需的一切,支援 Groovy 和 Kotlin 作為 JVM 上的替代語言,並且可以根據應用程式的需要靈活地建立多種架構。從 Spring Framework 5.1 開始,Spring 需要 JDK 8+(Java SE 8+)併為 JDK 11 LTS 提供開箱即用的支援。建議將 Java SE 8 update 60 作為 Java 8 的最低修補程式版本,但通常建議使用最新的修補程式版本。

Spring 支援廣泛的應用場景。在大型企業中,應用程式往往存在很長時間,並且必須執行在升級週期不受開發人員控制的JDK和應用程式伺服器上。其他可能作為嵌入伺服器的單個 jar 執行,可能在雲環境中。還有一些可能是不需要伺服器的獨立應用程式(例如批次處理或整合工作負載)。

Spring 是開源的。它擁有一個龐大而活躍的社群,可根據各種實際用例提供持續的反饋。這幫助 Spring 在很長一段時間內成功發展。

三、Spring Framework 與Spring Boot的版本對應關係

Spring boot 版本 Spring Framework jdk 版本 maven 版本
1.5.0.RELEASE 4.3.6.RELEASE 7 3.2+
1.5.2.RELEASE 4.3.7.RELEASE 7 3.2+
1.5.3.RELEASE 4.3.8.RELEASE 7 3.2+
1.5.4.RELEASE 4.3.9.RELEASE 7 3.2+
1.5.5.RELEASE 4.3.10.RELEASE 7 3.2+
1.5.7.RELEASE 4.3.11.RELEASE 7 3.2+
1.5.8.RELEASE 4.3.12.RELEASE 7 3.2+
1.5.9.RELEASE 4.3.13.RELEASE 7 3.2+
2.0.0.RELEASE 5.0.2.RELEASE 8 3.2+
2.1.*.RELEASE 5.1.*.RELEASE 8 3.2+
2.2.*.RELEASE 5.2.*.RELEASE 8 3.3+
2.3.*.RELEASE 5.2.*.RELEASE 8+ 3.3+
2.4.* 5.3.* 8+ 3.3+
2.5.* 5.3.* 8+ 3.3+
2.6.* 5.3.* 8+ 3.3+

四、主要更新內容

以下列舉了5.3.11版本的更新內容,5.2.18請自行檢視官網

4.1 新特性

  • 增強 DefaultResponseErrorHandler 以允許記錄完整的錯誤響應正文
  • 在 CookieAssertions 失敗訊息中包含正確的關鍵字
  • 在 ByteArrayResource.hashCode() 中使用 Arrays.hashCode() 
  • 通過系統屬性允許預設的 CacheAwareContextLoaderDelegate 設定 27540
  • 直接呼叫 bean 派生的 (Auto)Closeable.close() 方法
  • JDK 9+ 的 JNDI API 防禦性參考(可選java.naming模組)
  • 當消費者任務被拒絕時 DefaultMessageListenerContainer 不會記錄錯誤/警告
  • 在 externallyManaged RootBeanDefinition 屬性上提供存取器
  • 允許在CglibAopProxyvia 避免類驗證ProxyFactory
  • 新增對非公共記錄宣告的支援
  • 為格式錯誤的 HTTP 響應發出 WebClientResponseException 
  • 如果當前連線的自動提交設定為 false,則 DatabasePopulatorUtils.execute 應該提交

4.2 BUG修復

  • CronTrigger 使用 new Date() 而不是上下文的時鐘
  • 在 AbstractFileResolvingResource.isReadable() 下載巨大的 jars 以檢查元件長度時 con.getContentLengthLong() 的效能影響
  • ResourceUrlEncodingFilter 對 HttpServletResponse#encodeURL 的效能影響
  • UriTemplateRequestEntity 不會覆蓋 hashCode() 和 equals() 
  • DataBufferUtils.write 丟失上下文
  • 避免在 <cache:annotation-driven /> 中重複註冊 JCacheOperationSource bean 
  • 使用 Java 17 生成代理失敗,並顯示「無法呼叫「Object.getClass()」,因為「cause」為空」 
  • MediaType.sortBySpecificityAndQuality 丟擲 java.lang.IllegalArgumentException:比較方法違反其一般約定
  • 讀取 SSE 響應時刪除前導空格
  • RegEx 中的非跳脫花括號導致 Android 上的初始化錯誤
  • ConcurrentReferenceHashMap 的 entrySet 違反了 Map 契約
  • 避免在 StandardBeanExpressionResolver 中提前確定 ConversionService 
  • Spring Framework >= 5.3.8 由於 InputStream 優化,ASM ClassReader 無法解析類檔案
  • StringUtils.collectionToDelimitedString(?) 當集合包含 null 時失敗並出現 NullPointerException 
  • Spring HATEOAS 在 WebFlux 中使用 Kotlin 協程和 ResponseEntity 導致 406 

4.3 檔案

  • 刪除關於缺少快取 API 的評論。

4.4 依賴升級

  • Upgrade to JUnit 5.8.1 
  • Upgrade to Reactor 2020.0.12 
  • Upgrade to SmallRye Mutiny 1.1.1 

詳細請點選官網地址檢視:

展開閱讀全文