当前位置: 首页 > news >正文

注解处理器(Annotation Processor)的定义与作用

1. 注解处理器(Annotation Processor)的定义与作用

定义

注解处理器是 Java 编译器的一种工具(javax.annotation.processing.Processor接口的实现类),它在编译期扫描和处理源代码中的注解(Annotation),并根据注解逻辑生成新的 Java 代码、资源文件或执行其他编译期操作。

作用

  • 代码生成:根据注解自动生成重复或模板化代码(如 Lombok 通过@Data生成 getter/setter,MyBatis 通过@Mapper生成代理类),减少手动编码。
  • 编译期校验:对注解标记的代码进行合法性检查(如 Lombok 验证@NonNull参数非空,Dagger 检查依赖注入是否完整),提前暴露错误。
  • 元数据处理:提取注解携带的元数据,用于生成配置文件、文档或其他编译产物。

2. 在 pom.xml 中配置注解处理器并定义执行顺序

Maven 中通过maven-compiler-plugin配置注解处理器,可指定处理器类路径及执行顺序。

配置示例(以 Lombok 为例):

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><!-- 配置注解处理器路径 --><annotationProcessorPaths><!-- 第一个处理器:Lombok --><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></path><!-- 第二个处理器:其他处理器(如MapStruct) --><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.3.Final</version></path></annotationProcessorPaths><!-- 强制指定处理器执行顺序(按声明顺序执行) --><compilerArgs><arg>-processor</arg><arg>lombok.launch.AnnotationProcessorHider$AnnotationProcessor,org.mapstruct.ap.MappingProcessor</arg></compilerArgs></configuration></plugin></plugins>
</build>

执行顺序说明:

  • annotationProcessorPaths中声明的处理器默认按顺序执行,但部分编译器可能不严格遵循,建议通过-processor参数显式指定全类名顺序(用逗号分隔),确保先执行的处理器生成的代码能被后续处理器使用(如 Lombok 生成的 getter 需被 MapStruct 引用)。

3. 注解处理器的执行时机

注解处理器在 **Java 编译期的 “注解处理阶段”** 执行,具体时机如下:
  1. 编译器解析源代码,收集所有注解信息。
  2. 调用注解处理器的process()方法,传入注解相关的语法树(AST)。
  3. 处理器处理注解,生成新的 Java 代码(如.java文件)。
  4. 新生成的代码会被重新加入编译流程,重复上述步骤(支持增量处理),直到没有新代码生成。
  5. 所有处理器执行完毕后,编译器进入字节码生成阶段,编译所有源代码(包括手动编写和自动生成的)。
关键特点:处理器仅在编译期运行,不影响运行时性能;生成的代码与手动编写的代码同等参与编译。

总结

  • 注解处理器是编译期工具,核心作用是代码生成和编译期校验。
  • Maven 中通过maven-compiler-pluginannotationProcessorPaths-processor参数配置处理器及执行顺序。
  • 执行时机为编译期的注解处理阶段,支持增量处理生成的代码。
http://www.gsyq.cn/news/30246.html

相关文章:

  • uniapp h5下pwa模式缓存问题
  • CRMEB的PHP版本跨域问题
  • Paper: Learning Affordances at Inference-Time for Vision-Language-Action Models
  • 2025 年热转印花膜优质厂家最新推荐排行榜:聚焦产品质量与客户满意度,涵盖硅胶 / 五金 / 塑胶等多材质应用场景
  • 2025 年国内除湿机厂家最新推荐排行榜:工业 / 家用场景优质品牌精选指南仓库 / 大型 / 车间除湿机公司推荐
  • 第1期(两题)
  • 门店运营成本高企?AI智能解决方案助力降本增效 - 教程
  • 102302155张怡旋数据采集第一次作业
  • 深入解析:Java外功精要(2)——Spring IoCDI
  • 2025年矩形橡胶支座源头厂家权威推荐榜单:GJZ矩形橡胶支座/圆形橡胶桥梁支座/桥梁橡胶支座源头厂家精选
  • 威胁狩猎平台升级:全新认证机制与功能增强
  • 精读C++20设计模式——结构型设计模式:享元模式 - 实践
  • JBoltAI:企业级 Java AI 应用开发框架
  • 实用指南:音视频学习(六十七):音视频像素格式
  • 2025年铁氟龙高温线厂家权威推荐榜:极细铁氟龙/UL10064铁氟龙/UL1332铁氟龙/UL1867铁氟龙/UL10064极细铁氟龙/UL1332极细铁氟龙/UL1867极细铁氟龙专业解析
  • 2025年卫衣品牌权威推荐榜:精选纯棉/加绒/oversize/情侣款卫衣源头厂家,潮流与舒适兼备的穿搭首选
  • 2025年透声膜厂家权威推荐榜:防水透声膜,透气透声膜,手表/耳机/智能手环专用透声膜优质供应商精选
  • 2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺高端定制,实木全屋整装,烘干/白胚/木蜡油保养,经典款品质之选
  • 2025年环境试验设备厂家权威推荐榜:冷热冲击/高低温/氙灯耐候/步入式恒温恒湿/HAST老化/机械淋雨试验箱全方位解析
  • 2025年高压加速老化设备厂家推荐排行榜,高压加速老化HAST,高压加速老化PCT,热流仪源头厂家最新权威测评与选购指南
  • CICD流程建设之持续集成实践指南
  • Codeforces Round 1049 (Div. 2)C. Ultimate Value
  • iPhone 上某人发来的短信消失了?9 种解决方法
  • freebsd14.3:安装kde6
  • vue: vue下载项目安装依赖库
  • 如何在1v1一对一视频直播交友APP中实现防录屏防截屏功能?
  • 基于SpringBoot3+Vue3的宠物领养平台、猫狗领养平台、宠物救助管理系统、流浪动物领养管理系统,毕业设计,课程设计
  • 2025 年最新推荐炼铅炉实力厂家排行榜:含废电瓶反射大型环保等设备,权威测评优选企业盘点可移动/熔/设备/无烟/新型炼铅炉厂家盘点
  • Android 网络请求:EasyNet(Okhttp + retrofit + flow + gson + 缓存 + 文件下载 + 文件上传 + 人性化Loading窗)
  • 基于格的抗量子密码