发布时间: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, 它最终从“高级特性”转变为“日常开发利器”。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码