IntelliJ IDEA 2025.3 全面擁抱 Spring 7

新聞
HongKong
16
10:38 AM · Nov 18 ,2025

自項目早期里程碑以來,IntelliJ IDEA 團隊一直與 Spring Framework 團隊緊密合作,確保無縫集成與可靠的工具支持。“我們衷心感謝他們的協作、真知灼見和早期反饋——沒有他們的幫助和專業知識,此次版本發佈將無從談起。”

官方表示,Spring 7 已實現在 IntelliJ IDEA 2025.3 中的開箱即用。

REST API 版本控制

Spring 7終於引入了內置的一流版本機制。現在你可以在映射註解中直接定義版本:

@GetMapping(path = "/quote", version = "1.0+")

ResponseEntity<Quote> 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

static class QuoteControllerTestConfig implements MockMvcBuilderCustomizer {

        @Override

        public void customize(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.0

spring.http.serviceclient.default.apiversion.insert.header=API-Version

還可以查看每個客户端的引用位置——直接通過側邊欄圖標或“Structure”工具窗口即可查看。展望未來,項目團隊還在開發能夠檢測未註冊客户端或錯誤導入的檢查功能,甚至可以幫助開發者根據 OpenAPI 規範生成客户端。簡而言之,就是讓開發者減少編寫 HTTP 客户端的時間,從而將更多精力投入到改進他們調用的 API 上。

Dynamic Bean Registration

新特性:BeanRegistrar 接口。有時需要動態註冊 Bean,而@Conditional 註解無法滿足需求。Spring 7 在能讓你以更優雅的方式實現:

public class QuoteProviderRegistrar implements BeanRegistrar {

    @Override

    public void register(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/

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.