您现在的位置是:首页 > 文章详情

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

日期:2025-11-18点击:4

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 建议使用基于属性的配置,通过头部属性启用版本控制。这是一个安全的起点,如果需要进行更复杂的操作,可以稍后进行调整。

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/

原文链接:https://www.oschina.net/news/384187/intellij-idea-2025-3-spring-7
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章