在上篇文章 Spring 注解编程之模式注解 中我们讲到 Spring 模式注解底层原理,依靠 AnnotationMetadata
接口判断是否存在指定元注解。
这篇文章我们主要深入 AnnotationMetadata
,了解其底层原理。
Spring 版本为 5.1.8-RELEASE
AnnotationMetadata 结构
使用 IDEA 生成 AnnotationMetadata
类图,如下:
AnnotationMetadata
存在两个实现类分别为 StandardAnnotationMetadata
与 AnnotationMetadataReadingVisitor
。StandardAnnotationMetadata
主要使用 Java 反射原理获取元数据,而 AnnotationMetadataReadingVisitor
使用 ASM 框架获取元数据。
Java 反射原理大家一般比较熟悉,而 ASM 技术可能会比较陌生,下面主要篇幅介绍 AnnotationMetadataReadingVisitor
实现原理。
基于