一、初步认识注解
1.为什么学习注解?
答: a.能够读懂别人写的代码,特别是框架相关的代码
b.让编程更加简洁,代码更加清晰
2.注解概念?
答:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法
二、java中的常见注解
1.JDK自带注解:
a、@Override
覆盖父类方法
b、@Deprecated
表示该方法已过时
c、@Suppvisewarnings
忽略过时方法所带来的警告
2.常见第三方注解:
a、@Autowired
可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。通过@Autowired的使用来消除set,get方法。
用法:
public class UserManagerImpl implements UserManager {
@Autowired
private UserDao userDao;
}
b、@Service
用于标注业务层组件。定义某个类为一个bean,则在这个类的类名前一行使用@Service(“XXX”),就相当于将这个类定义为一个bean,bean的名称为xxx.而无需去xml文件内配置。
c、@Repository
用于标注数据访问组件,即DAO组件。
三、注解分类
1.按照运行机制分:
a、源码注解:注解只在源码中存在,编译成.class文件就不存在了
b、编译时注解:注解在源码和.class文件中都存在(JDK自带注解都属于编译时注解)
c、运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解(@Autowired属于运行时注解)
2.按照来源分:
a、来自JDK的注解
b、来自第三方的注解
c、我们自己定义的注解
3.还有一种特殊的注解:
a、元注解
四、自定义注解
1.自定义注解的语法要求
2.注解的注解(元注解)
3.使用自定义注解
a、注解方法不能带有参数;
b、注解方法返回值类型限定为:基本类型、String、Enums、Annotation或者是这些类型的数组;
c、注解方法可以有默认值;
d、注解本身能够包含元注解,元注解被用来注解其它注解。
4.示例
上面的代码中有四种类型的元注解:
a、@Documented——指明拥有这个注解的元素可以被javadoc此类的工具文档化。这种类型应该用于注解那些影响客户使用带注释的元素声明的类型。如果一种声明使用Documented进行注解,这种类型的注解被作为被标注的程序成员的公共API。
b、**@Target——指明该类型的注解可以注解的程序元素的范围。该元注解的取值可以为TYPE,METHOD,CONSTRUCTOR,FIELD等。如果Target**元注解没有出现,那么定义的注解可以应用于程序的任何元素。
c、**@Inherited——指明该注解类型被自动继承。如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,那么也将自动查询当前类的父类是否存在Inherited**元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类。
d、**@Retention**——指明了该Annotation被保留的时间长短。RetentionPolicy取值为SOURCE,CLASS,RUNTIME。