Spring 4.3 的新功能和增強
摘要
本文介紹了 Spring 4.3 的新功能和增強的特性。
核心容器改進
- 核心容器額外提供了更豐富的後設資料來改進程式設計。
- 預設 Java 8 的方法檢測為 bean 屬性的 getter/setter 方法。
- 如果目標 bean 只定義了一個建構函式,則它無需要指定@Autowired註解
- @Configuration類支援建構函式注入。
- 任何 SpEL 表示式用於指定@EventListener的 condition 引用到 bean(例如@beanName.method())。
- 組成註解現在可以用一個包含元註解中的陣列屬性的陣列元件型別的元素來覆蓋。例如,@RequestMapping的的String[] path 可以在組成註解用 String path 覆蓋。
- @Scheduled和@Schedules現在是作為元註解用來通過屬性覆蓋來建立自定義的組成註解。
- @Scheduled適當支援任何範圍內的 bean。
資料訪問改進
jdbc:initialize-database 和 jdbc:embedded-database 支援可配置的分離器被應用到每個指令碼。
快取改進
Spring 4.3 允許在一個給定的 key 併發呼叫時實現要同步,使得相應的值只計算一次。這是一個可選的功能,通過設定@Cacheable的新的 sync 屬性來啟用。此功能引入了Cache介面的一個重大更改,即get(Object key, Callable<T> valueLoader)方法已新增。
Spring 4.3 還改進了快取抽象如下:
- SpEL 表示式對於快取相關的註解,現在可以引用 bean(即@beanName.method()))。
- ConcurrentMapCacheManager和ConcurrentMapCache現在通過一個新的storeByValue屬性支援快取實體的序列化。 @Cacheable,@CacheEvict,@CachePut和@Caching現在是作為元註解用來通過屬性覆蓋來建立自定義的組成註解。
JMS 改進
- @SendTo現在可以在類級別指定一個共同回覆目標。
- @JmsListener 和 @JmsListeners現在是作為元註解用來通過屬性覆蓋來建立自定義的組成註解。
Web 改進
- 內建支援 HTTP HEAD 和 HTTP OPTIONS.
- 新的組合註解 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, 和 @PatchMapping 用於 @RequestMapping。
- 新的@RequestScope, @SessionScope, 和 @ApplicationScope用於 web 範圍的組合註解
- 新的 @RestControllerAdvice 註解是 @ControllerAdvice 和 @ResponseBody 的語義結合
- @ResponseStatus現在在類級別被支援,並被所有方法繼承
- 新的 @SessionAttribute 註解用於訪問 session 屬性 (見例子)
- 新的 @RequestAttribute 註解用於訪問請求屬性 (見例子)
- @ModelAttribute 允許通過 binding=false 來避免資料繫結(見引用)
- 錯誤和自定義丟擲,將被統一到 MVC 異常處理器中處理
- HTTP 訊息轉換編碼一致處理,包括預設 UTF-8 用於多部分文字內容
- 靜態資源處理使用配置的ContentNegotiationManager用於媒體型別計算
- RestTemplate 和 AsyncRestTemplate 支援通過DefaultUriTemplateHandler 來實現嚴格的URI變數編碼
- AsyncRestTemplate支援請求攔截
WebSocket 訊息改進
@SendTo和@SendToUser現在可以在類級被指定為共享共同的目的地。
測試改進
- 為了支援 Spring TestContext Framework ,現在需要 JUnit 4.12 或者更高的版本
- 新的SpringRunner 關聯於 SpringJUnit4ClassRunner
- 測試相關的註解,現在可以在介面上宣告瞭。例如,基於 Java 8 的介面上使用測試介面
- 空宣告的 @ContextConfiguration 現在將會完全忽略,如果檢測到預設的 XML 檔案, Groovy 指令碼, 或 @Configuration 型別
- @Transactional 測試方法不再需要public (如, 在 TestNG 和 JUnit 5)
- @BeforeTransaction 和 @AfterTransaction不再需要public,並且在 基於 Java 8 的介面的預設方法上宣告
- 在Spring TestContext Framework 的ApplicationContext的快取現在有界為32預設最大規模和最近最少使用驅逐策略。最大的大小可以通過設定稱為spring.test.context.cache.maxSize 一個 JVM 系統屬性或 Spring 配置。
- ContextCustomizer API 用於自定義測試 ApplicationContext 在 bean 定義載入到上下文後但在上下文被重新整理前。定製工具可以在全球範圍由第三方進行註冊,而無需要實現一個自定義的 ContextLoader。
- @Sql 和 @SqlGroup 現在作為元註解通過覆蓋屬性來建立自定義組合註解
- ReflectionTestUtils現在在 set 或 get 一個欄位時,會自動解開代理。
- 伺服器端的 Spring MVC 測試支援具有多個值的響應頭。
- 伺服器端的 Spring MVC 測試解析表單資料的請求內容和填充請求引數。
- 伺服器端的 Spring MVC 測試支援 mock 式的斷言來呼叫處理程式方法。
- 客戶端 REST 測試支援允許指定多少次預期的請求以及期望的宣告順序是否應該被忽略(參見15.6.3,“客戶端REST測試”)。
- 客戶端 REST 測試支援請求主體表單資料的預期。
支援新的類庫和伺服器
- Hibernate ORM 5.2 (同樣很好的支援 4.2/4.3 和 5.0/5.1,不推薦 3.6 )
- Jackson 2.8 (在Spring 4.3,最低至 Jackson 2.6+ )
- OkHttp 3.x (仍然並行支援 OkHttp 2.x)
- Netty 4.1
- Undertow 1.4
- Tomcat 8.5.2 以及 9.0 M6
參考引用
相關文章
- Spring AOP 增強介紹Spring
- 增強MybatisPlus擴充新功能 實戰MybatisPlus大合集MyBatis
- 使用者體驗增強!| SOLIDWORKS 2022 新功能揭祕Solid
- IDEA 2024.1:Spring支援增強、GitHub Action支援增強、更新HTTP Client等IdeaSpringGithubHTTPclient
- 微軟擬對Office2007增添新功能增強安全性微軟
- Spring Security 6.3 新功能Spring
- spring事務管理原始碼分析(一)配置和事務增強代理的生成流程Spring原始碼
- Let's Encrypt 2019:保持強勁增長 並帶來振奮人心的新功能
- CWE 4.3:強化你的資料自我保護能力
- Spring Boot中增強對MongoDB的配置(連線池等)Spring BootMongoDB
- Spring Data Moore有哪些新功能? - spring.ioSpring
- Spring Modulith 1.3 有哪些新功能?Spring
- 觸控板和滑鼠增強Middle
- 使用 @Audited 增強Spring Boot 應用程式的資料審計能力Spring Boot
- 4.3
- VS Code Spring 全新功能來了!Spring
- 使用Resilience4J增強Spring WebClient容錯性 – ArnoldSpringWebclient
- 基於 SVM 和增強型 PCP 特徵的和絃識別特徵
- DigiCert和Thales如何增強Hyperledger的網路安全性
- SAP訂單編排和流程增強概述
- 觸控板和滑鼠增強工具:Middle MacMac
- Spring AI 更新:支援OpenAI的結構化輸出,增強對JSON響應的支援SpringOpenAIJSON
- Spring AOP學習筆記03:AOP的核心實現之獲取增強器Spring筆記
- 如何使用SMOD和CMOD進行SD的使用者增強
- Hybris做增強的兩種方式:In App Extension和Side by Side ExtensionAPPIDE
- 10G FGA的增強
- Java 8 中 CAS 的增強Java
- 觸控板和滑鼠增強軟體:Middle for MacMac
- Java 8: Lambda表示式增強版Comparator和排序Java排序
- 增強for 迴圈
- Liftoff 和 Vungle 強強聯手,合力打造領先的獨立移動增長平臺
- 4.3 Hadoop概念Hadoop
- 專業的觸控板輔助和增強應用:Middle for macMac
- 25 個值得關注的檢索增強生成 (RAG) 模型和框架模型框架
- matlab影像對比度增強,拉伸和灰度變換Matlab
- iZotope RX 10 for mac(音訊修復和增強工具)Mac音訊
- 深度學習煉丹-資料處理和增強深度學習
- Spring Boot 2.2中有什麼新功能? - oioSpring Boot
- 如何增強grpc的攔截器RPC