首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >IDEA 2025.3 新特性:AOT 黑科技加速开发,效率提升 300%

IDEA 2025.3 新特性:AOT 黑科技加速开发,效率提升 300%

作者头像
GoLang学习记
发布2026-02-27 13:05:44
发布2026-02-27 13:05:44
1360
举报

回首千川皆倒影 方知人世本无岸

痛点findByUsernameAndStatus() 看似简单,背后却靠反射 + 字符串拼接 + 运行时解析…… 启动慢、调试难、Native 编译失败? 好消息:Spring Data 现在支持 AOT(Ahead-Of-Time)编译了! IntelliJ IDEA 2025.3 更是让它「所见即所得」——生成的 SQL/JPQL 直接高亮、可跳转、可断点调试!


🔍 一、什么是 Spring Data AOT?

AOT = Ahead-Of-Time(预编译) 传统 Spring Data 在运行时动态生成查询(如根据方法名拼 JPQL),而 AOT 模式会在构建阶段就把这些查询提前生成好——变成真实的 Java 代码!

好处

  • ⚡ 启动更快(省去运行时解析开销)
  • 🧠 内存更省(无需缓存动态代理类)
  • 📦 更易打包 GraalVM Native Image
  • 👀 可读!可调!可 debug!

🛠️ 二、如何启用 AOT?

只需两步:

1️⃣ 升级依赖(Spring Boot 3.4+ / Spring Data 3.4+)

代码语言:javascript
复制


<parent>

<groupId>org.springframework.bootgroupId>

<artifactId>spring-boot-starter-parentartifactId>

<version>3.4.0version>

parent>

2️⃣ 构建时生成 AOT 代码

运行构建命令后,生成的源码会出现在:

代码语言:javascript
复制
build/generated/aotSources/

💡 IntelliJ IDEA 2025.3 自动识别这些目录,将其加入源码索引!


🖼️ 三、IDEA 中查看生成的查询(重点来了!)

✅ 示例:一个简单 Repository 方法

代码语言:javascript
复制
publicinterfaceQuoteRepositoryextendsJpaRepository<Quote,Long>{

List<Quote>findAllByAuthor(String author);

}
▶ Spring Data JPA:生成 JPQL

IDEA 直接在方法上方内联显示生成的 JPQL

JPA 查询内联展示
JPA 查询内联展示

点击

🔍
🔍

图标(或 Ctrl+Click)可跳转到真实生成的实现类

代码语言:javascript
复制
publicList<Quote>findAllByAuthor(String author){

String queryString ="SELECT q FROM Quote q WHERE q.author = :author";

Query query =this.entityManager.createQuery(queryString);

  query.setParameter("author", author);

return(List<Quote>) query.getResultList();

}
▶ Spring Data JDBC:生成原生 SQL

AOT会展示 SQL,并列出所有映射字段:

JDBC SQL 展示
JDBC SQL 展示

生成代码更「接地气」——直接操作 CriteriaRowMapper

代码语言:javascript
复制
{
  "name": "findAllByAuthor",
  "signature": "public abstract java.util.List<com.jetbrains.test.boot4.server.quote.quote>com.jetbrains.test.boot4.server.quote.QuoteRepository.findAllByAuthor(java.lang.String)",
  "query": {
    "query": "SELECT \"quote\".\"id\" AS \"id\", \"quote\".\"text\" AS \"text\", \"quote\".\"author\" AS \"author\", \"quote\".\"source\" AS \"source\" FROM \"quote\" WHERE \"quote\".\"author\" = :author"
  }
}</com.jetbrains.test.boot4.server.quote.quote>

如果生成的查询需要优化,你可以使用“内联查询”操作将其插入到 Spring Data 仓库代码中的 @Query注解里

在这里插入图片描述
在这里插入图片描述

✅ 下次 AOT 构建时,就会用你写的查询,不再依赖方法名推导!

▶ 五、如何运行 & 调试 AOT 模式?

⚠️ 默认 bootRun不会加载 AOT 代码! 必须显式开启:

Gradle(推荐)

build.gradle.kts 中添加:

代码语言:javascript
复制
tasks.named("bootRun") {
    if (project.hasProperty("aot")) {
        jvmArgs("-Dspring.aot.enabled=true")
        systemProperty("spring.profiles.active", "aot")
    }
}

运行时加 -Paot

代码语言:javascript
复制
./gradlew bootRun -Paot

Maven

在pom里增加如下代码

代码语言:javascript
复制
<profile>

<id>aot</id>

<properties>

<spring-boot.run.profiles>aot,localdb</spring-boot.run.profiles>

<spring-boot.run.jvmArguments>-Dspring.aot.enabled=true</spring-boot.run.jvmArguments>

</properties>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<executions>

<execution>

<id>process-aot</id>

<goals>

<goal>process-aot</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

</profile>

使用这个 profile 执行如下命令:

代码语言:javascript
复制
./mvnw -Paot package spring-boot:run

AOT断点调试

💡 IDEA 可直接创建对应 Run Configuration(支持断点调试!):

对于Gradle,需要如下配置

Gradle AOT Run Config
Gradle AOT Run Config

打断点后,直接进入生成的 findAllByAuthor() 方法,查看参数、SQL、结果集——无需穿透代理层!

Debug AOT Repository
Debug AOT Repository

对于maven

在这里插入图片描述
在这里插入图片描述

✅ 总结:AOT + IDEA = 开发体验飞跃

传统方式

AOT + IDEA 2025.3

❓ 查询藏在黑盒里

👀 SQL/JPQL 直接可见

🐢 启动慢、反射重

⚡ 启动更快、内存更低

🐞 调试要“猜”代理

🔍 断点直达真实实现

📦 Native 编译困难

🧱 为 GraalVM 铺平道路

🌟 AOT 不是魔法,而是「把运行时成本搬到构建时」的务实选择。 借助 IntelliJ IDEA 2025.3,它终于从“高级特性”变成了“日常开发利器”。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang学习记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🔍 一、什么是 Spring Data AOT?
  • 🛠️ 二、如何启用 AOT?
    • 1️⃣ 升级依赖(Spring Boot 3.4+ / Spring Data 3.4+)
    • 2️⃣ 构建时生成 AOT 代码
  • 🖼️ 三、IDEA 中查看生成的查询(重点来了!)
    • ✅ 示例:一个简单 Repository 方法
      • ▶ Spring Data JPA:生成 JPQL
      • ▶ Spring Data JDBC:生成原生 SQL
  • ▶ 五、如何运行 & 调试 AOT 模式?
    • Gradle(推荐)
    • Maven
  • AOT断点调试
  • ✅ 总结:AOT + IDEA = 开发体验飞跃
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档