内置的元注解 @Retention, @Target, @Documented, @Inherited, @Repeatable(1.8)
@Inherited 注解
@Inherited 标明注解是能够被传递到子类的,即注解在父类的注解也会作用到它的子类上去,但是标注在接口上则子类不会获取到该注解,同样在方法上也不会被子类获取
@Target 注解
ElementType.ANNOTATION_TYPE 的用处,好像也就是一个约束,只限定被它声明了注解只能用于其他的注解类型上去
Spring 中的元注解与组合注解
Java 原生的元注解(Meta-annotations) 基本就是指内置的 @Retention, @Target, @Documented, @Inherited, @Repeatable 那一干注解,以及自定义注解加上 @Target({ElementType.ANNOTATION_TYPE}) 实现的自定义元注解。而 Spring 的元注解概念是不一样的,它认为能用于注解的注解就是元注解,即 @Target({ElementType.Type}) 标识的也是元注解,因为其他的注解也是 Type
Spring 的组合注解是如何工作的
如果使用正常的 Java 注解反射 API getAnnotation() 和 isAnnotationPresent() 只能发现组合后的注解 @LazyBean, 而元注解是这样得不到的.但 Spring 在发现注解的时候走入的更深,注解的注解(元注解)和组合后的注解都能捞出来.Spring 提供了 AnnotationUtils 和 AnnotatedElementUtils 工具类来查找注解类