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 等。