IntelliJ IDEA 2025.3 发布,全面拥抱 Spring 7
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/
为您推荐相关文章:
同类文章推荐: