美文网首页工具技巧
Annotation Processor 实践

Annotation Processor 实践

作者: 山哥Samuel | 来源:发表于2022-02-02 19:56 被阅读0次

    在上篇文章的实战中,搞了GraalVM编译Java程序,有个需求是自动生成reflect-config.json, 并且生成DynamoBean 的Helper类。这是通过Annotation Processor做的。原来想像Lombok一样改变原类添加方法,但是发现Lombok用了ASM才做到这件事,因为Annotation Processor是不允许你生成一个跟原类名一样的类在同一包名之下。

    那么你面临几个选择:

    • 扩展Lombok,添加你的注解
    • Annotation Processor生成新类
    • 自己写一个改AST的东西 (需要花费的时间无法估计)

    Lombok的扩展也是不难的,有兴趣的同学可以Google一下。而本人考虑到搞自己的lombok发行版比较容易有冲突,而且还要花精力维护(每个新JVM版本出来,Lombok都会去更新,就算不出新JVM版本,也会有更新),还是打算用Annotation Processor。

    参考了文章

    最终做出了

    总结

    关于如何去实现,本文就不多叙述了,因为参考文档就很详细,这里想记录一些注意点:

    • 一定要分开模块或者项目来做,而不是在同一个项目做。否则很容易有奇奇怪怪的问题
    • dynamo-helper 项目 mvn clean install 之后,其它项目就可以引用了,尤其在IDEA里面刷新Maven import.
    • 有时候Maven跑没问题,但是跑测试用例有问题,试试mvn clean compile再来。因为有些遗留代码
    • IDEA里面Enable Annotation Processor, Screen Shot 2022-02-02 at 7.56.05 PM.png

    相关文章

      网友评论

        本文标题:Annotation Processor 实践

        本文链接:https://www.haomeiwen.com/subject/znurkrtx.html