你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

intellij idea gradle IntelliJ IDEA Gradle 项目 Spring Data AOT 编译实战:告别反射慢启动

发布时间:2026-06-07

浏览次数:0

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

痛点

首先, tus() 这个东西, 它看起来好像挺简单的, 然而, 其背后却是依靠着反射这一技术, 再加上字符串拼接的方式, 还有运行时进行解析等等一系列复杂操作……它存在启动速度慢的问题, 在调试的时候也困难重重, 甚至还会出现编译失败的状况? 不过, 现在有个好消息告诉你: Data 在目前已经支持 AOT(也就是 Ahead-Of-Time, 提前编译)这种编译方式了!并且, 就 IDEA 2025.3 版本而言, 更是令它达到了「所见即所得」这样一种神奇的效果——所生成那些 SQL/JPQL 语句, 能够直接实现高亮显示, 还可以进行跳转, 甚至能够设置断点来进行调试!

一、什么是 Data AOT?

平常是先运行, 再在运行的时候, 依据方法名去拼接 JPQL 从而动态生成查询, 其中 Data 属于这种传统方式, 然而 AOT 模式不一样, 它是 Ahead - Of - Time(预编译)的, 会在构建的阶段, 就把那些查询预先生成好, 并且还会转化为实实在在的 Java 代码!

好处:

️ 二、如何启用 AOT?

只需两步:

1️⃣ 将依赖进行升级, 此依赖要求为Boot 3.4及以上版本, 或者Data 3.4及以上版本2️⃣ 在构建的过程当中生成AOT代码。

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

IDEA 2025.3, 会自动去识别这些目录, 随后把它们加入到源码索引当中!

三、在IDEA之中去查看那生成的查询(极其关键的要点来了), 示例为: 存在一个简单的、如同方法一样的Data JPA, 它能够生成JPQL。

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

点击

图标(或

Ctrl+Click

)可跳转到

真实生成的实现类

Data JDBC:生成原生 SQL

AOT会展示 SQLintellij idea gradle,并列出所有映射字段:

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

{
  "name": "findAllByAuthor",
  "signature": "public abstract java.util.List

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"
  }
}

倘若生成的查询存在需要进行优化这种情况, 你能够运用“内联查询”这一操作, 把它插入到Data仓库代码里的@Query注解之中。

接下来的一次AOT构建当中, 就会采用你所撰写的查询, 而不会再去依赖依据方法名所进行的推导!五、怎样去运行以及调试AOT模式呢?

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

(推荐)

在 build..kts 中添加:

tasks.named("bootRun") {
    if (project.hasProperty("aot")) {
        jvmArgs("-Dspring.aot.enabled=true")
        systemProperty("spring.profiles.active", "aot")
    }
}

运行时加 -Paot:

1
./gradlew bootRun 
-Paot

Maven

在pom里增加如下代码

使用这个 执行如下命令:

1
./mvnw 
-Paot
 package spring-boot:run

AOT断点调试

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

对于,需要如下配置

进行断点操作之后, 直接切入生成的那个 () 方法, 去查验参数、SQL 以及结果集, 而且不必透过代理层的穿透!

对于maven

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

传统方式

AOT + IDEA 2025.3

查询藏在黑盒里

SQL/JPQL 直接可见

启动慢、反射重

启动更快、内存更低

调试要“猜”代理

断点直达真实实现

编译困难

为 铺平道路

AOT并非魔法, 而是一种将运行时成本转移至构建时的务实抉择, 借助IDEA 2025.3, 它最终从“高级特性”转变为“日常开发利器”。

如有侵权请联系删除!

13262879759

微信二维码