Solon

solon.proxy.apt

v2.2.6
<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 代理类的差别

差别asmapt
名字以 "$$SolonAsmProxy" 结尾以 "$$SolonAptProxy" 结尾
原理在运行时,通过 asm 字节码构建代理类在编译时,通过 APT 机制生成源码随源码一同编译
其它专用 ClassLoader 加载,在外面找不到这个类与源码加载在同一个 ClassLoader 里

3、代码应用

有动态组件的模块里添加 solon.proxy.apt 插件,正常编译打包即可。就像 lombok 那样使用。

原则上没必要特意使用,有 graalvm native 打包需求时使用即可。