JDK:注解(Annotation)
1.Annotation(注解)
注解在jdk1.5被引入,可以为类、字段和方法提供自定义的元数据(一种描述数据)标注。
举例,@Override用于标注子类的重写方法:
|
2.注解的使用
2.1 自定义注解的创建
自定义注解需要通过@interface进行声明(其实质是extends Annotation接口), like:
|
2.2 注解的无参方法
在自定义的注解中可以声明无参方法,但方法的返回类型被限定为以下3类:
|
在jdk1.8提供default关键字后,可以为声明方法提供默认返回值。
|
2.3 元注解
JDK的元注解用于描述自定义注解的使用范围,是否被继承,生命周期等特性,包括以下4种:
2.3.1 @Target @Target用于描述自定义注解的使用范围,通过enum类型ElementType给定:
若不指定自定义注解的使用范围,则默认可以使用在任何地方。
2.3.2 @Retention @Retention用于描述自定义注解的生命周期,由enum类型RetentionPolicy指定:
由于生命周期长度 RUNTIME > CLASS > SOURCE,所以前者的作用范围一定大于后者。
2.3.3 @Inherited @Inherited用于描述自定义注解的继承特性(是否可以被子类继承) |
2.4 获取类、字段、方法和方法参数上的注解
|
2.6 使用实例
在Spring框架中,自定义注解与动态代理有着大量结合使用的案例;
以下代码是利用自定义注解,简单实现了Spring IOC容器的bean扫描、创建和注册过程,并提供了方法的事务注解:
|
|
|
|
|
|
测试结果:
|
完成了bean的扫描和创建注册,并实现了方法的事务动态代理。