IntelliJ IDEA 2025.3 已正式發布,Spring 7 開箱即用。
REST API 版本控制
Spring 7 終于引入了內置的一流版本機制。現在你可以在映射注解中直接定義版本:
@GetMapping(path = "/quote", version = "1.0+")
ResponseEntity getQuote() {
Quote result = quoteService.getRandomQuote();
return ResponseEntity.ok(result);}
IntelliJ IDEA 會自動檢測版本控制。IDE 會檢查你的應用是否配置了版本控制,識別你使用的是屬性還是 ApiVersionConfigurer 類,如果出現問題還會發出警告。如果你忘記啟用版本控制,IDE 不僅會指出問題所在,還會告訴你如何修復。
![]()
默認情況下,IntelliJ IDEA 建議使用基于屬性的配置,通過頭部屬性啟用版本控制。這是一個安全的起點,如果需要進行更復雜的操作,可以稍后進行調整。
spring.mvc.apiversion.use.header=Api-Version可以在 @GetMapping 注解中的版本號上按住 Ctrl 鍵點擊,直接跳轉至配置代碼。IDE 還會檢查你的版本值是否遵循標準的 SemVer 規則。
![]()
如果你使用的是自定義版本解析器,IntelliJ IDEA 不會進行干擾。
Testing versioned APIs
在測試方面,你可以采用直接的方式,保持簡單。
mockMvc.perform(get("/api/quote")
.accept(MediaType.APPLICATION_JSON)
.header("API-Version", "1.0"))
另一方面,Spring 7 允許你為測試配置 API 版本控制,并提供了一個新的 API ——apiVersion 方法:
![]()
IntelliJ IDEA 了解此 API,并會幫助你配置測試的版本控制。對于 header-based 的版本控制,代碼如下所示:
@TestConfiguration
staticclassQuoteControllerTestConfigimplementsMockMvcBuilderCustomizer{
@Override
publicvoidcustomize(ConfigurableMockMvcBuilder builder){
builder.apiVersionInserter(ApiVersionInserter.useHeader("Api-Version"));
}}
此配置允許你在單個類中定義版本控制方法,從而大大簡化測試維護。
HTTP Interface Clients
目前,要支持 HTTP Interface client 的版本控制,仍然需要手動編寫配置。IntelliJ IDEA 2025.3 將 HTTP 接口識別為 bean —— 不再出現“紅色波浪線”或“無法解析 bean”的警告。無論在何處使用這些客戶端,都將獲得完整的自動補全、導航和注入支持。
spring.http.serviceclient.default.apiversion.default-version=1.0.0spring.http.serviceclient.default.apiversion.insert.header=API-Version
![]()
還可以查看每個客戶端的引用位置 —— 直接通過側邊欄圖標或“Structure”工具窗口即可查看。展望未來,項目團隊還在開發能夠檢測未注冊客戶端或錯誤導入的檢查功能,甚至可以幫助開發者根據 OpenAPI 規范生成客戶端。簡而言之,就是讓開發者減少編寫 HTTP 客戶端的時間,從而將更多精力投入到改進他們調用的 API 上。
Dynamic Bean Registration
新特性:BeanRegistrar 接口。有時需要動態注冊 Bean,而@Conditional 注解無法滿足需求。Spring 7 在能讓你以更優雅的方式實現:
publicclassQuoteProviderRegistrarimplementsBeanRegistrar{
@Override
publicvoidregister(BeanRegistry registry, Environment env){
registry.registerBean("quoteProviderDb", QuoteProviderDb.class);
registry.registerBean("quoteProviderFallback", QuoteProviderFallback.class);
}}
如果你的 bean 構造邏輯變得復雜或依賴于多個因素,那么 programmatic bean registration 就是一種巧妙的處理方法。IntelliJ IDEA 可以動態識別這些 bean,因此你將不再看到那些煩人的“未解析的注入”警告。你可以直接從注入點導航到注冊。
![]()
IDE 無法預料到動態注冊的所有極端情況 —— 這正是 Spring Debugger 發揮作用之處。在調試復雜的配置時,它會準確地顯示運行時注入的內容。
更多詳情查看:
https://blog.jetbrains.com/idea/2025/11/intellij-idea-2025-3-spring-7/
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.