JSR-269插入式注解处理器的调试技巧

/ 默认分类 / 0 条评论 / 1046浏览

JSR-269插入式注解处理器的调试技巧

最近想写一个无侵入性或低侵入性的代码级的灰度切流工具,我想到了使用java的编译时作用的注解,例如@Overrid,@Deprecated或者lombok中的功能,所以想了解一下其中的原理,好在自己的项目中也可以使用。其实之前我知道编译时注解处理器的大体作用原理,但是一直没有深入了解其中的详细流程。这次我详细总结了关于编译时注解的作用原理并手写了一个简单的lombok类似的小插件。并且其中,我也总结了关于java探针(也就是java agent)的使用原理,后面我整理好笔记后会更新到我的博客,这篇文章只是记录下我在学习这部分知识点的过程中踩的一个坑,并记录下一个调试技巧。

在编写好注解处理器后,在项目中如果用到了这个注解,但是可能没有什么作用,此时我们想知道注解处理器在编译期间执行的过程中是不是除了什么问题,放在平时的业务代码中,我们就是直接打印日志观察,但是在注解处理器的逻辑中,通过messager.printMessage打印的日志看不到??

这里提供的方法是:使用idea的build功能,编译使用了该注解的项目代码,这个时候可以在build的消息窗口中看到注解处理器中messager.printMessage打印的日志了。

注解处理器日志打印