在上一篇文章中,我们提到了 Spring 的四种注解编程模型:元注解、模式注解、组合注解、属性别名和覆盖。为了支持这四种注解编程模型,Spring 提供了 AnnotationUtils 和 AnnotatedElementUtils 工具类。注意,Spring-5.2.x 重构了这部分的 API,本文以 Spring-5.2.2 版本为基础进行分析。
核心组件(API) - org.springframework.core.annotation.AnnotationUtils
org.springframework.core.annotation.AnnotatedElementUtils
注解查找 - org.springframework.core.annotation.AnnotationsScanner
- org.springframework.core.annotation.MergedAnnotations.SearchStrategy
- org.springframework.core.annotation.AnnotationFilter
- org.springframework.core.annotation.AnnotationsProcessor
- org.springframework.core.annotation.RepeatableContainers
- 注解解析(属性别名和覆盖解析) - org.springframework.core.annotation.MergedAnnotation
- org.springframework.core.annotation.AnnotationTypeMapping
注解代理
AnnotationUtils:
解决元注解查找、继承查找以及注解别名三大功能,但不能解决元注解属性覆盖的问题。其中注解别名包括显示别名、隐式别名、传递的隐式别名。AnnotatedElementUtils:在
AnnotationUtils的基础上,
为 Spring 的元注解编程模型定义了公共 API,并支持注解属性覆盖。如果不需要支持注解属性覆盖,请考虑使用 AnnotationUtils。1.1.1 元注解查找
1.1.2 继承查找
1.1.3 注解别名
1.2 AnnotatedElementUtils
1.2.1 属性覆盖
Spring注解属性别名
Spring注解编程基石(一)