IntelliJ IDEA 2025.3 发布,全面拥抱 Spring 7

软件资讯 软件资讯 发布于 1小时前 0 浏览 0 回复

IntelliJ IDEA 2025.3 现已发布,Spring 7 开箱即用。

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 2025.3 发布,全面拥抱 Spring 7

默认情况下,IntelliJ IDEA 建议使用基于属性的配置,通过头部属性启用版本控制。这是一个安全的起点,如果需要进行更复杂的操作,可以稍后进行调整。

spring.mvc.apiversion.use.header=Api-Version

可以在@GetMapping注解中的版本号上按住 Ctrl 键点击,直接跳转至配置代码。IDE 还会检查你的版本值是否遵循标准的 SemVer 规则。

IntelliJ IDEA 2025.3 发布,全面拥抱 Spring 7

如果你使用的是自定义版本解析器,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 2025.3 发布,全面拥抱 Spring 7

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

IntelliJ IDEA 2025.3 发布,全面拥抱 Spring 7

还可以查看每个客户端的引用位置——直接通过侧边栏图标或“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,因此你将不再看到那些烦人的“未解析的注入”警告。你可以直接从注入点导航到注册。

IntelliJ IDEA 2025.3 发布,全面拥抱 Spring 7

IDE 无法预料到动态注册的所有极端情况——这正是 Spring Debugger发挥作用之处。在调试复杂的配置时,它会准确地显示运行时注入的内容。

更多详情可查看:https://blog.jetbrains.com/idea/2025/11/intellij-idea-2025-3-spring-7/



为您推荐相关文章:

  • IntelliJ IDEA 2023.1 Beta 已发布
  • IntelliJ IDEA 2023.1 Beta 2 发布,支持保存多个窗口布局
  • IntelliJ IDEA 2022.3.3 发布
  • IntelliJ IDEA 2022.2.5 发布
  • IntelliJ IDEA 2023.1.1 发布
  • 同类文章推荐:

  • Debian 13.2 版本发布
  • Docker 29.0.1 发布
  • Spring Data 2025.1.0 GA
  • DBeaver 25.2.5 发布
  • Apache Doris 4.0.1 版本正式发布
  • Spring AI 1.1 GA 发布