JAVA注解处理器

JAVA注解处理器

因为无法忍受JAVA对于上层业务领域的某个特性的粗糙支持,开始从JAVA里找补救方法,兜兜转转来到了注解处理器的领地。

以前只是使用常规的JAVA注解来进行资源标记等元数据标记能力,对于基于注解处理器的高级用法,是比较抵触的,个人认为破坏和传染了研发环境的生态纯净度,绑架了依赖方。

但是目前遇到的这个问题,可能只有注解处理器能够比较优雅的解决了。先不管那么多了,搞定方案再说。

不再重复粘贴,直接链接一篇比较全面的文章:https://blog.csdn.net/u014454538/article/details/122531293

常见问题(1):报错【服务配置文件不正确】

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project log4sec-common: Compilation failure
[ERROR] 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: Provider cn.log4sec.exception.EnumPlugin not found时抛出异常错误

原因:这是因为注解处理器所在的模块也被注解处理器处理了,造成找不到注解处理器。

解决:在注解处理器所在的模块,增加pom配置,<compilerArgument>-proc:none</compilerArgument>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
                <compilerArgument>-proc:none</compilerArgument>
            </configuration>
        </plugin>
    </plugins>
</build>

常见问题(2):如何单步调试自定义注解处理器

链接一篇干净有效的文章:https://blog.csdn.net/weixin_43547181/article/details/126624045

执行命令:mvnDebug clean package
观察输出信息中,调试端口
Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000

配置远程JVM调试,并启动,可见注解处理器的断点被命中。

好了,开始构建并调试自己的注解处理器吧。有动态调试在,总是可以又快又好的迅速理解相关蹩脚的概念和枯燥的理论。