solon.proxy.apt
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.proxy.apt</artifactId>
<scope>provided</scope>
</dependency>
1、描述
基础扩展插件,在 solon.proxy 的基础上,增加了动态代理的 apt 实现。此插件在使用时,需要添加 <scope>provided</scope>
。
它的作用是,在编译时为 @ProxyComponent 注解的类直接生成代理类源码,一同打包。程序运行时,就不再需要 asm 用字节码动态生成代理类。
进而,为 graalvm native 提供友好支持。
2、Asm 与 Apt 代理类的差别
差别 | asm | apt |
---|---|---|
名字 | 以 "$$SolonAsmProxy" 结尾 | 以 "$$SolonAptProxy" 结尾 |
原理 | 在运行时,通过 asm 字节码构建代理类 | 在编译时,通过 APT 机制生成源码随源码一同编译 |
其它 | 专用 ClassLoader 加载,在外面找不到这个类 | 与源码加载在同一个 ClassLoader 里 |
3、代码应用
有动态组件的模块里添加 solon.proxy.apt
插件,正常编译打包即可。就像 lombok
那样使用。
原则上没必要特意使用,有 graalvm native 打包需求时使用即可。