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注解原理探索(一)的主要内容,如果未能解决你的问题,请参考以下文章