一、概述
本文,主要了解注解的作用。为后面Spring 注解方式实现IOC ,DI 做铺垫。
之前,主要是通过xml配置来实现 IOC和DI,后面的文章将介绍使用注解来完成。
二、注解概念
注释:
给人看的提示信息,人看了提示信息了解程序的内容
java中注释的格式:// /**/ /** */
注解:
sun在jdk5.0开始提供的新特性
给程序看的提示信息,程序看后可以根据有无注解及注解上属性的不同配置执行不同的逻辑。
三、jdk常用内置注解介绍
@Override
声明重写父类方法的注解,要求编译器帮我们检查是否成功的覆盖,如果没有成功覆盖父类方法,编译器将会进行报错提示。
@Deprecated
声明方法被过时,不再建议使用,要求编译器在编译的过程中对于这样的方法的调用提出警告,提示方法过时。
@SuppressWarnings
压制警告,提示编译器,在编译的过程中对指定类型的警告不再提示
四、自定义注解开发
1 使用@interface关键字声明一个注解
2 元注解:修饰注解的注解
@Target 用来声明被修饰的注解可以用在什么位置。
@Retention 用来声明被修饰的注解会被保留到什么阶段
a) RetentionPolicy.SOURCE
此注解将会被保留到源码阶段,.java中,在编译过程中被删除。这种类型的注解通常是给编译器看的。
b) RetentionPolicy.CLASS
此注解将会被保留在源码阶段 和 编译阶段 ,.java和.class中,在类加载的过程中被删除。这种类型的注解通常是给类加载器看的。
c) RetentionPolicy.RUNTIME
此注解将会被保留在源码阶段 、编译阶段 和 运行阶段,.java .class和内存中的字节码中都会存在。
这种类型的注解通常用来在运行阶段进行反射,控制程序运行过程。
@Documented 不常用
@Inherited 不常用
五、反射注解
常用方法
isAnnotationPresent(Class<? extends Annotation> annotationClass)
如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。
getAnnotation(Class<A> annotationClass)
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
getAnnotations()
返回此元素上存在的所有注释。
六、反射注解案例
参考代码
https://github.com/hailindai/SpringSample
七、小结
本文主要需要明白 :程序可以读取注解内容,就像程序读取xml配置文件一样。Spring既然可以读取xml帮我们实现IOC,DI,那么自然也可以读取注解帮我们实现IOC,DI。这样就可以继续学习后续内容。