Java注解处理框架扩展_第1页
Java注解处理框架扩展_第2页
Java注解处理框架扩展_第3页
Java注解处理框架扩展_第4页
Java注解处理框架扩展_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java注解处理框架扩展

§1B

1WUlflJJtiti

第一部分注解处理框架概述..................................................2

第二部分扩展注解处理器的机制..............................................5

第三部分自定义注解处理器创建..............................................7

第四部分处理器注解与元注解...............................................10

第五部分注解处理的阶段和优先级...........................................13

第六部分注解保留机制的运用...............................................16

第七部分代码生成与编译时转型.............................................19

第八部分扩展框架的最佳实践...............................................21

第一部分注解处理框架概述

关键词关键要点

注解处理框架概论

1.注解处理框架是用于在编译时处理注解的工具,用干在

编译阶段执行特定的任务。

2.注解处理框架通过提供一组API,允许开发人员编写称

为注解处理器的自定义程序,这些程序可以在编译时对带

有特定注解的类执行操作。

3.注解处理框架提供了在编译时进行代码生成、验证和优

化等任务的灵活性,从而提高了代码开发的效率和可靠性。

注解处理器的生命周期

1.注解处理器在编译过程中有明确的生命周期,包括初始

化、扫描、处理和后处理阶段。

2.在初始化阶段,注解处理器被实例化并初始化。在旧描

阶段,它扫描源代码并标识带有特定注解的类。

3.在处理阶段,注解处理器执行其主要操作,如代码生成

或验证。在后处理阶段,它可以执行其他操作,如清除生成

的代码或记录处理结果。

注解处理的类型

1.注解处理有两种主要类型:源代码处理和字节码处理。

源代码处理在编译源代码之前进行,而字节码处理在编译

字节码之后进行。

2.源代码处理允许生成新的源代码,而字节码处理允许修

改现有字节码。选择处理类型取决于所执行的任务和所需

的灵活性级别。

注解处理在JavaEE中

1.注解处理在JavaEE开发中广泛用于处理持久性、事务

管理、Web服务和安全等方面。

2.JavaEE提供了标准的注解集和注解处理框架,用于简化

这些领域的开发。

3.利用注解处理,JavaEE开发人员可以专注于应用程序

逻辑,同时框架处理底层实现细节。

注解处理在单元测试中的应

用1.注解处理可以用于简化单元测试的编写,通过自动生成

测试用例和设置测试环境。

2.测试框架,如JUnit和Mockito,利用注解处理来允许

开发人员使用注解轻松定义和配置测试。

3.利用注解处理,单元测试可以变得更具可读性和可维护

性,从而提高测试效率和可靠性。

注解处理的最新进展

1.注解处理框架不断发展,提供新功能和性能改进。例如,

Java9引入了新的注解处理API,提供了更好的性能和对

循环依赖处理的支持。

2.注解处理在人工智能和机器学习等领域的应用正在兴

起,用于自动化代码生成和模型优化。

3.随着对定制化和可重用性代码的需求不断增长,预计注

解处理将在未来继续发挥关键作用。

注解处理框架概述

注解处理框架是一种编译时代码生成机制,允许开发者在源代码中使

用注解来定义元数据,并利用注解处理框架在编译阶段生成或修改目

标代码。通过这种方式,注解处理框架可以极大地增强Java语言的

可扩展性和代码可维护性。

注解处理的基本概念

注解处理过程主要涉及以下几个基本概念:

*注解(Annotation):一种元数据元素,它可以被附加到Java类、

方法、字段、参数或局部变量上,以提供附加信息。

*注解处理器(AnnotationProcessor):一种Java程序,它可以

读取和处理注解,并生成或修改源代码。

*注释处理API(AnnotationProcessingAPI):一组Java类和

接口,用于在Java编译器中注册和执行注解处理器。

注解处理的流程

注解处理通常遵循以下流程:

1.Java编译器扫描源代码,识别注解。

2.Java编译器调用注释处理API,加载注册的注解处理器。

3.注解处理器读取和处理注解,生成或修改源代码。

4.Java编译器编译修改后的源代码,生成最终的class文件。

注解处理框架的优势

注解处理框架提供了以下优势:

*代码生成:通过注解,开发者可以定义模板和规则,由注解处理

器生成代码。这可以减少重复性任务,并确保生成的代码满足特定要

求。

*代码增强:注解处理器可以修改源代码,添加新功能或方法。这

可以增强现有代码,而无需手动修改。

*元数据提取:注解处理器可以提取注解中的元数据,并将其存储

在自定义数据结构中。这可以用于代码分析、配置管理和文档生成。

*可重用性和可扩展性:注解处理框架允许开发者创建可重用的注

解处理器,这些处理器可以应用于不同的项目。这提高了代码的可重

用性和可扩展性。

流行的注解处理框架

Java生态系统中存在着各种注解处理框架,包括:

*JavaAnnotationProcessingTool(APT):JavaSE6中引入的

标准注解处理框架。

*Dagger2:一个用于生成依赖注入代码的注解处理框架。

*lombok:一个用于生成标准代码(例如getter、setter、构造函

数)的注解处理框架。

*AutoValue:一个用于生成不可变值类的注解处理框架。

*Mockito:一个用于生成模拟对象的注解处理框架。

注解处理的最佳实践

在使用注解处理框架时,建议遵循以下最佳实践:

*使用标准注解:尽量使用Java语言内置的标准注解,以降低与

第三方注解处理器的兼容性问题。

*避免循环依赖:注解处理器之间应避免出现循环依赖,否则可能

导致编译错误。

*使用增量注解处理:如果可能,使用增量注解处理,只处理受影

响的源文件,以提高编译速度。

*编写高效的注解处理器:注解处理器应尽可能高效,以避免影响

编译性能。

*记录和调试:对注解处理器进行详细记录和调试,以便在出现问

题时快速解决。

第二部分扩展注解处理器的机制

关键词关键要点

【扩展注解处理器的机制】:

1.通过创建自定义注解处理器扩展框架功能。

2.注入自定义注解处理器,以实现特定处理逻辑。

3.利用Java反射API访问和修改编译时代码元素。

【处理器类的生命周期控制】:

扩展注解处理器的机制

注解处理框架允许通过扩展注解处理器来增强其功能。扩展注解处理

器遵循特定机制,以与框架集成并参与注解处理过程。

1.实现AnnotationProcessor接口

注解处理器必须实现javax.annotation,processing.Processor'

接口。此接口定义了以下方法:

*getSupportedAnnotationTypes0:返回注解处理器支持处理的注

解类型列表。

*getSupportedSourccVersionO:指定注解处理器支持的源代码版

本。

*process(Set<?extendsTypeElement>,RoundEnvironment):处

理注解的实际逻辑°

2.注册注解处理器

注解处理器必须在'META-

INF/services/javax.annotation,processing.Processor'文件中

注册。此文件包含注解处理器的全限定类名。

3.处理注解

在'process()方法中,注解处理器获取一组'TypeElement',代

表已注解的类型。它还获取一个'RoundEnvironment'对象,其中包

含与注解处理器支持的注解类型相匹配的注解元素。

注解处理器可以执行以下操作:

*检查注解元素并生成源代码。

*注解类型生成注解。

*修改类型系统。

4.扩展注解处理框架

通过扩展注解处理器,可以扩展注解处理框架的功能。例如:

*代码生成器:生成基于注解的源代码或其他工件。

*静态分析器:分析注解并检测错误或违规情况。

*代码优化器:优化基于注解的代码。

*元注解处理器:处理元注解,从而扩展注解处理框架本身的功能。

5.注解处理器生命周期

注解处理器遵循特定生命周期:

*初始化:框架实例化注解处理器并调用其构造函数。

*处理:注解处理器处理注解元素并执行其逻辑。

*退出:框架调用注解处理器的'getSupportedAnnotationTypes()'

和、getSupportedSourceVersionO'方法。

6.最佳实践

编写扩展注解处理器时,请遵循以下最佳实践:

*确保注解处理器高效且不会损害编译器性能。

*清理生成的代码以避免与其他代码发生冲突。

*提供清晰的错误消息和警告。

*考虑到处理器的可移植性和可重用性。

第三部分自定义注解处理器创建

自定义注解处理器创建

简介

自定义注解处理器允许程序员创建可处理自定义注解的处理器类,从

而扩展Java注解处理框架。通过实现

javax.annotation,processing.AbstractProcessor'接口,可以创

建一个自定义注解处理器。

实现自定义注解处理器

以下步骤概述了自定义注解处理器创建过程:

1.创建处理器类:创建继承'AbstractProcessor'接口的新类。

2.覆盖'getSupportedAnnotationTypes方法:返回处理器支持处

理的注解类型名称列表。

3.覆盖'process'方法:该方法包含处理注解逻辑。它接受两个参

数:

-RoundEnvironment'对象,提供有关注解及其位置的信息。

-AnnotationProcessor'对象,允许处理器访问编译器环境。

4.使用AnnotationProcessor对象:AnnotationProcessor对

象提供访问其他注解处理器、编译错误和源文件的方法。

示例:

以下是创建自定义注解处理器'MyProcessor'的示例:

、、、•

java

importjavax.annotation,processing.AbstractProcessor;

importjavax.annotation,processing.RoundEnvironment;

importjavax.annotation,processing.SupportedAnnotationTypes;

©SupportedAnnotationTypes(ncom.example.MyAnnotation,r)

©Override

//处理自定义注解逻辑

//获取有关注解及其位置的信息

)

returntrue;

)

!

处理器类配置

要配置处理器,必须在编译器命令行中使用'-processor'选项。还

可以使用Java注解处理器API(JSR269)创建

javax.annotation,processing.Processor'实例。

处理器链

注解处理器在特定的处理链中执行。处理器链是由'-processor'选

项中指定的处理器类列表组成的。当处理器链中的所有处理器完戌其

处理后,编译器会继续进行编译过程。

处理器选项

处理器选项允许将参数传递给处理器。可以指定处理器选项,方法是

在A'选项后跟处理器类名和参数名称和值。

最佳实践

创建自定义注解处理器时,应遵循以下最佳实践:

-隔离处理器逻辑:将处理逻辑与特定注解类型相关联的单独类中隔

离出来。

-避免副作用:处理器不应更改源代码或永久存储信息。

-提供反馈:使用AnnotationProcessor'对象生成编译器错误和

警告以提供有关处理结果的反馈。

-遵循命名约定:处理器类名应以'Processor'后缀结尾,注解类

型应以开始。

第四部分处理器注解与元注解

关键词关键要点

处理器注解与元注解

1.介绍处理器注解,阐明其作用和好处,强调其在扩展注解

处理框架中的重要性。

2.讨论元注解,解释其在注解处理中的特殊作用,例如定义

新的注解处理器或配置现有处理器。

3.分析注解处理框架中处理器注解和元注解的交互方式,

重点介绍如何使用元注解来控制和增强注解处理流程。

处理器注解

1.阐述处理器注解的类型,包括

@SupportedAnnotationTypes、@SuppoiledSourceVersion和

@Suppor(edOptions,并解释它们的用途。

2.解释处理器注解中参数的作用,例如注解类型、源代吗版

本和处理选项,强调如何使用这些参数来定制处理流程。

3.讨论处理器注解的最佳实践,例如注解命名约定、文档和

版本控制,以确保代码的可读性、可维护性。

元注解

1.介绍元注解的类型,例如©Retention、@Target和

©Documented,并解释它们如何影响注解的行为和范围。

2.阐明元注解在注解处理中的作用,例如使用©Retention

定义注解保留周期,使用©Target控制注解可应用的目标

类型。

3.讨论元注解的最佳实践,例如使用明确的命名约定、提供

清晰的文档和避免滥用,以确保代码的质量和有效性。

处理器注解

处理器注解用于注解处理器类,以指定其处理的注解类型和处理行为。

常用的处理器注解包括:

*©SupportedAnnotationTypes':指定处理器支持的注解类型,以

类名数组形式提供C

*©SupportedSourceVersion':指定处理器支持的源代码版本。

*©SupportedOptions':指定处理器支持的命令行选项。

*'©Retention':指定处理器注解的保留策略,例如'SOURCE'(仅

在源代码中保留)或'RUNTIME'(在编译后的字节码中保留)。

元注解

元注解用于注解其他注解,以提供附加信息或行为。常用的元注解包

括:

*'©Target':指定注解可用于注解的元素类型,例如类、方法或字

段。

*'©Retention':指定注解的保留策略,司上。

*©Documented:指示JavaDoc工具将注解包含在生成的文档中。

*'©Inherited':指示子类可以继承父类的注解。

处理器注解与元注解的交互

处理器注解和元注解可以结合使用,以提供更加灵活和强大的处理能

力。例如:

*©SupportedAnnotationTypes'与©Target':确保处理器仅处

理具有特定目标类型的注解。例如,一个处理类注解的处理器可以这

样注解:

©Target(value=ElementType.TYPE)

、、、

*©SupportedSourceVersion与©Retention:确保处理器仅处

理与特定源代码版本兼容的注解。例如,一个处理仅适用于Java8

或更高版本的注解的处理器可以这样注解:

©SupportedSourceVersion(value=SourceVersion.RELEASE_8)

©Retention(value=RetentionPolicy.RUNTIME)

、、、

*©SupportedOptions'与©Documented:允许处理器指定命令

行选项,并生成JavaDoc文档来描述这些选项。例如,一个允许用

户指定输出目录的处理器可以这样注解:

©Documented

、Q、

使用处理器注解和元注解的示例

以下是使用处理器注解和元注解的示例:

java

//一个处理类注解的处理器

©Target(value=ElementType.TYPE)

©Override

//处理带©ClassAnnotation'注解的类

•••

)

)

//一个自定义类注解

©Documented

©Target(value=ElementType.TYPE)

©Retention(value=RetentionPolicy.RUNTIME)

//注解参数

Stringvalue();

}

、、、

在这个示例中,ClassAnnotationProcessor'处理器使用

'@SupportedAnnot£tionTypes'和、@Target'元注解,确保它仅处

理具有©ClassAnnotation注解的类。'@ClassAnnotation'注解

使用©Documented和©Retention'元注解,指示JavaDoc工

具包含该注解的文档,并确保该注解在运行时保留在字节码中。

第五部分注解处理的阶段和优先级

注解处理的阶段和优先级

注解处理框架在编译器中分阶段执行,每个阶段都有特定的优先级顺

序。这些阶段和优先级如下:

1.注解处理阶段

*优先级:100

*描述:在此阶段,注解处理器可以访问源代码树,并对标注了注

解的元素进行处理C在这个阶段,可以生成新代码、修改现有代码或

生成诊断信息。

2.代码生成阶段

*优先级:200

*描述:在此阶段,注解处理器可以生成新的Java源文件或类文

件。生成的代码可以包含新的方法、字段或类型。

3.注解生成阶段

*优先级:300

*描述:在此阶段,注解处理器可以生成新的注解并将其附加到源

代码树中的元素上c这些新注解可以用于进一步的注解处理或其他目

的。

优先级顺序

注解处理框架根据以下规则执行注解处理器:

*具有更高优先级的处理器先执行。

*如果有多个具有相同优先级的处理器,则按处理器的完全限定类名

的字母顺序执行。

*处理器可以指定依赖关系,这意味着它们必须在具有特定优先级的

其他处理器执行之后才能执行。

控制优先级

可以通过以下方式控制注解处理器的优先级:

*©SupportedAnnotationTypes注解:此注解用于指定处理器应处

理的注解类型。注解的「priority。'元素可用于设置处理器的优先

级。

*©SupportedSourceVersion注解:此注解用于指定处理器支持的

Java源级别。注解的'version()'元素可用于设置处理器的优先

级。

*处理器的完全限定类名:如前所述,如果有多个具有相同优先级

的处理器,则按处理器的完全限定类名的字母顺序执行。

例子

以下示例演示了如何控制注解处理器的优先级:

…java

©SupportedAnnotationTypes(,fcom.example.MyAnnotation,r)

©SupportedSourceVersion(SourceVersion.RELEASE_17)

©Priority(250)

//...

)

在这个示例中,MyAnnotationProcessor'的优先级设置为250.并

支持处理'com.example.MyAnnotation'注解。由于其优先级高于默

认优先级100,因比它将在其他注解处理器之前执行。

第六部分注解保留机制的运用

关键词关键要点

注解保留机制概述

1.注解保留机制决定了注解信息在编译后的字节码文件

中是否存在。

2.Java提供了SOURCE.CLASS.RUNTIME三种保留类

型。

3.保留机制影响注解信息的可用性,从而影响反射操作、

字节码操作和类加载时的处理。

RUNTIME保留机制

1.RUNTIME保留机制使注解信息在编译后仍然存在十字

节码文件中。

2.这种机制允许在运行时通过反射访问注解信息。

3.RUNTIME保留注解常用于配置框架、依赖注入和持久

化等场景。

CLASS保留机制

1.CLASS保留机制使江解信息仅在编译后的类文件中存

在,但在字节码文件中不存在。

2.这种机制允许在编译时访问注解信息,例如生成代码或

检查类型约束。

3.CLASS保留注解常用于代码生成、类型检查和依赖分析

等场景。

SOURCE保留机制

1.SOURCE保留机制使注解信息仅在源代码文件中存在,

在编译后会被丢弃。

2.这种机制允许编译器处理注解信息,例如执行代码生成

或类型检查。

3.SOURCE保留注解常用于标记代码的意图、文档化或进

行静态分析。

注解保留机制的趋势

1.随着Java语言的发展,RUNTIME保留机制变得越来越

流行,因为它是访问注解信息最灵活的方式。

2.编译器优化和JIT编译技术的进步使得RUNTIME保留

注解的性能影响越来越小.

3.注解保留机制正在与元注解结合使用,以提供更高级别

的元数据管理。

注解保留机制的前沿

1.Java反射API的改进使访问RUNTIME保留注解信息更

加方便和高效。

2.随着注解驱动的开发和元编程的兴起,对注解保留机制

的需求不断增长。

3.研究人员正在探索新的注解保留机制,以提供更细粒度

的控制和性能优化。

注解保留机制的运用

简介

注解保留机制允许开发者指定在编译器将注解从代码中移除之前,注

解应保留多长时间cJava提供了三个注解保留级别:

*'SOURCE':注解仅保留在源代码中,且不会编译到字节码中。

*'CLASS':注解保留在编译后的字节码文件中,但在加载类时会被

虚拟机移除。

*'RUNTIME':注解在类加载后仍然存在于类中,可通过反射访问。

SOURCE注解

'SOURCE'注解保留级别用于在编译过程中仅在源代码级别使用注解。

此级别通常用于以下情况:

*标记代码以供IDE或其他工具使用,例如用于文档生成或代码分

析。

*启用编译器检查,例如'@SuppressWarnings'注解,用于抑制编译

器警告。

CLASS注解

'CLASS'注解保留级别用于在类加载之前将注解保留在字节码文件中。

此级别通常用于以下情况:

*存储元数据,供字节码操作框架(如ASM)使用。

*在类加载时执行自定义逻辑,例如使用代理或拦截器。

RUNTIME注解

「RUNTIME'注解保留级别用于将注解保留在类加载后。此级别通常用

于以下情况:

*反射检查和操作元数据,例如使用'©Annotation'注解。

*启用运行时行为,例如用'©Transactional'注解标记的方法。

保留机制的优点

*提高效率:使用'SOURCE'或'CLASS'注解保留级别,可以减少字节

码文件的大小和加或时间。

*增强安全性:'RUNTIME'注解可以提供额外的安全措施,防止篡改

或未经授权的访问。

*提高可维护性:注释可以作为代码中元数据的文档,有助于提高可

读性。

保留机制的缺点

*内存消耗:'RUNTIME'注解可能会增加类对象的内存消耗。

*性能影响:访问'RUNTIME'注解可能会带来性能开销,尤其是在频

繁使用反射的情况下。

选择保留级别

选择合适的注解保留级别取决于具体的需求和权衡:

*如果注解仅用于编译时检查或代码生成,则'SOURCE'保留级别是合

适的。

*如果注解在类加载时需要,但不需要在运行时访问,贝『CLASS'保

留级别是合适的。

*如果注解在运行时需要访问或影响运行时行为,贝『RUNTIME'保留

级别是合适的。

通过仔细考虑保留级别,开发者可以优化代码性能、内存消耗和安全

性。

第七部分代码生成与编译时转型

代码生成与编译时转型

Java注解处理框架的强大功能之一是能够执行代码生成和编译时转

型。通过利用Java编译器提供的处理注解的能力,框架可以动态生

成源代码并将其注入到编译过程中。这为广泛的应用程序打开了大门,

包括:

代码生成

*自动代码生成:根据注解信息自动生成代码,例如数据模型、服

务实现或测试用例。

*模板化代码:从模板生成代码,允许根据输入参数自定义输出。

*代码重构:通过重写或扩展现有类和方法来重构代码基础。

*代码优化:根据注解指导进行代码优忆,例如性能优化或内存管

理。

编译时转型

*字节码增强:在编译过程中修改字节码,向类添加新功能或修改

现有行为。

*代理生成:创建动态代理类,可拦截方法调用、属性访问或事件

处理。

*代码注入:在编译时将代码片段注入到现有类中。

*代码织入:将横切关注点(例如日志记录、安全检查)无缝地织

入代码库中。

代码生成和编译时转型的优势

*自动化和效率:消除手动编写代码的需要,提高开发效率。

*可扩展性和模块化:允许在不修改现有代码的情况下扩展或修改

应用程序。

*可维护性:通过将代码生成和转型过程与注解声明分离,提高代

码可维护性。

*可重用性:允许在多个项目中重用代码生成和转型逻辑。

*类型安全:在编译时执行代码生成和转型,确保类型安全性和运

行时稳定性。

示例

*Lombok:一个著名的注解处理框架,用于生成JavaBean(数据模

型)、getter/setter方法和构造函数。

*Dagger2:一个依赖注入框架,使用注解处理来生成工厂类,动

态初始化对象。

*AspectJ:一个强大的字节码增强框架,用于实现横切关注点,例

如日志记录、安全性和性能监视。

*ANTLR:一个语法分析器生成器,使用注解处理来生成代码,解析

和生成语言。

结论

代码生成和编译时转型是Java注解处理框架的重要功能,为广泛的

应用程序打开大门°通过动态生成代码和修改字节码,框架可以实现

自动化、可扩展性和可维护性,从而增强Java开发。

第八部分扩展框架的最佳实践

扩展Java注解处理框架的最佳实践

模块化

*将注解处理程序分解成模块化的组件,乂便于维护和重用°

*使用依赖注入框架将模块松散耦合,提高可测试性和可维护性。

DRY原则

*遵循DRY(不要重复自己)原则,避免在不同的注解处理程序中复

制代码。

*创建抽象类或接口来定义通用行为,然后由具体的注解处理程序实

现。

可扩展性

*设计注解处理程序以支持扩展,允许用户添加或修改功能。

*提供钩子方法或扩展点,让用户可以自定义注解处理过程。

隔离

*将注解处理程序代码与应用程序代码隔离。

*避免在注解处理程序中直接访问应用程序数据或调用应用程序方

法。

配置

*提供配置选项,允许用户定制注解处理程序的行为。

*使用属性文件或YAML配置文件来存储配置参数,以便于更改和

管理。

性能优化

*优化注解处理过程以减少编译时间。

*使用并发技术(例如多线程)来提升处理速度。

*缓存注解元数据以避免重复解析。

可调试性

*提供详细的错误消息和日志记录,帮助用户调试注解处理程序的问

题。

*使用断点和调试器来跟踪注解处理过程。

兼容性

*确保注解处理程序与不同的JDK版本和IDE集成。

*遵循Java语言规范和JSR308规范,以确保广泛的兼容性。

文档

*提供全面的文档来解释注解处理程序的功能、配置选项和使用案例。

*包括示例和教程,以帮助用户入门并充分利用框架。

社区支持

*加入社区论坛或参与开源项目,与其他开发人员交流和获取支持。

*提供在线资源,例如文档、教程和示例,以帮助用户学习和使用框

架。

避免的陷阱

*过于复杂:避免创建过于复杂或难以维护的注解处理程序。

*代码重复:不要在不同的注解处理程序中重复代码,而是采取模块

化和DRY原则。

*缺乏可扩展性:设计注解处理程序时应考虑扩展性,允许用户定制

和扩展功能。

*性能问题:优化注解处理过程以减少编译时间,避免使用未经优化

的代码。

*缺乏文档:提供全面的文档至关重要,以帮助用户了解框架的功能

和用法。

关键词关键要点

自定义注解处理器创建

1.注解处理器基础

*关键要点:

*注解处理器是编骨时运行的程序,用

于处理源代码中的注解。

*它提供了扩展Java语言功能、执行

代码生成或验证源代码质量的机会。

*为了创建自定义注解处理器,必须实

现'cessing.Processor'

接口。

2.处理器注解

*关键要点:

*'©SupportedAnnolationTypes':指定

处理器支持的注解类型的列表。

*'@Suppor(edSo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论