1、引入iidp-plugin包

<dependency>
    <groupId>com.sie.meta</groupId>
    <artifactId>sie-iidp-plugin</artifactId>
    <version>0.0.2</version>
</dependency>

2、使用@StringField注解

import com.sie.meta.plugin.StringField;
import com.sie.snest.engine.model.Bool;
import com.sie.snest.sdk.annotation.meta.MethodService;
import com.sie.snest.sdk.annotation.meta.Model;

@StringField
@Model(isAutoLog = Bool.True, name = "my_test")
public class MyAnnoTest {

    private String a;
    private String c = "cccc";

    public static void main(String[] args) {
        MyAnnoTest test = new MyAnnoTest();
        MyAnnoTest.modelName();
        MyAnnoTest.testMethod_META();
        System.out.println(MyAnnoTest.a());
        System.out.println(MyAnnoTest.c());
    }
    
    @MethodService(description = "testMethod")
    void testMethod() {
    }
}
编译并查看生成的class文件
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class MyAnnoTest {
    private String a;
    private String c = "cccc";

    public static String c() {
        return "c";
    }

    public static String a() {
        return "a";
    }
    public static String modelName() {
        return "my_test";
    }
    public static String testMethod_META() {
        return "testMethod";
    }
    public MyAnnoTest() {
    }

    public static void main(String[] args) {
        new MyAnnoTest();
        System.out.println(a());
        System.out.println(c());
    }
}
可以发现,新生成了3个静态方法 public static String modelName() 返回模型名称, public static String a()public static String c() 它们分别返回该filed的字符串名称。

3、使用IDEA插件

由于APT(Annotation Processing Tool)只是在编译阶段生成代码,并没有侵入IDEA的行为,所以在IDEA中进行开发并不会对生成的代码进行智能提示,为此需要配套编写iidp-plugin辅助在IDEA中进行智能提示(详细参考 iidp-plugin 设计与实现)。可在这里直接下载插件 iidp-plugin-v0.0.1 并按照下图所示进行安装:

安装完成以后,开始编写代码,可以实现IDEA代码智能提示增强的代码,以及单步调试打印结果,如下图:

校验json文件

4、注意事项

  • 另外,如果通过IDEA调试报错,可以配置VM options,-Djps.track.ap.dependencies=false

  • 目前只支持IDEA智能提示,不支持如eclipse vscode 等。