Annotation Processor 實踐

在上篇文章的實戰(zhàn)中,搞了GraalVM編譯Java程序,有個需求是自動生成reflect-config.json, 并且生成DynamoBean 的Helper類。這是通過Annotation Processor做的。原來想像Lombok一樣改變原類添加方法,但是發(fā)現(xiàn)Lombok用了ASM才做到這件事,因為Annotation Processor是不允許你生成一個跟原類名一樣的類在同一包名之下。

那么你面臨幾個選擇:

  • 擴展Lombok,添加你的注解
  • Annotation Processor生成新類
  • 自己寫一個改AST的東西 (需要花費的時間無法估計)

Lombok的擴展也是不難的,有興趣的同學可以Google一下。而本人考慮到搞自己的lombok發(fā)行版比較容易有沖突,而且還要花精力維護(每個新JVM版本出來,Lombok都會去更新,就算不出新JVM版本,也會有更新),還是打算用Annotation Processor。

參考了文章

最終做出了

總結(jié)

關(guān)于如何去實現(xiàn),本文就不多敘述了,因為參考文檔就很詳細,這里想記錄一些注意點:

  • 一定要分開模塊或者項目來做,而不是在同一個項目做。否則很容易有奇奇怪怪的問題
  • 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容