Spring注解原理探索(一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring注解原理探索(一)相关的知识,希望对你有一定的参考价值。

参考技术A

Java注解起源:JDK1.5
常见Java注解 :

1.从@Override说起,引出Java注解和元注解。
@Override 源码如下:

注意@Override 源码中有3个要点:

2.再看@Retention源码(Retention: 保留,滞留之意。)

RetentionPolicy.SOURCE 保留在源码级别,被编译器抛弃,如@Override(如上@Override源码);
RetentionPolicy.CLASS 被编译器保留在编译后的class文件,但是被VM抛弃;
RetentionPolicy.RUNTIME 保留至运行时, 可以被反射读取 。如 @Retention 元注解本身。
** 引申1 :如果定义一个注解需要被反射读取,则在定义这个注解的时候将添加@Retention(RetentionPolicy.RUNTIME) 元注解。**

3.再看@Target 元注解,定义了注解应该起作用的地方。

注解作用位置:

** 引申2 :如果想要自定义一个注解,就必须指定注解作用的位置。作用在 类,方法,属性域,构造函数等。 **

举例 SpringMVC 中的 @RequestMapping。
其源码定义如下:

@RequestMapping 的@Target元注解 表明它可以被使用在方法和类(或接口,注解,enum)上。
@RequestMapping 的@Retention元注解表明它可以保留到运行时(RUNTIME),被反射读取。

** 引申3 :如果想要自定义注解,除了添加@interface 修饰类名,必须满足上述引申1和引申2。 **
那么如何自定义注解?
请参考: Spring注解原理探索(二)之 Java中如何自定义注解

以上是关于Spring注解原理探索(一)的主要内容,如果未能解决你的问题,请参考以下文章

从Springboot探索spring到底从哪开始解析注解的

Spring实战Spring注解配置工作原理源码解析

Spring实战Spring注解配置工作原理源码解析

Spring注解的实现原理和Spring常用注解介绍

Spring-扫描注解原理,注解自动扫描原理分析

spring transaction注解原理