关键字 @interface 写在类访问修改符与类名之间 表示该类为注解类
想更好的自己来写注解那么就要了解几个元注解
@Target
//作用域
// CONSTRUCTOR:用于描述构造器;
// FIELD:用于描述域;
// LOCAL_VARIABLE:用于描述局部变量;
// METHOD:用于描述方法;
// PACKAGE:用于描述包;
// PARAMETER:用于描述参数;
// TYPE:用于描述类、接口(包括注解类型) 或enum声明;
@Retention
//生命周期
// 1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
// 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
// 3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Documented
//生成javadoc时包含注解
@Inherited
//可被子注解继承他
**** 注解于类上的注解
通过@interface来修饰一个类 给其赋予元注解及VALUE 这样一个自定义注解就完成了
那么大家说了自定义注解到底能干什么呀
如:
1.导出cvs 数据时 某些字段不需要 导出那么 我们是写死吗? 现在我们的注解就有用了 通过有无指定注解的判断来检查是否可以导出该字段数据
2.日志通过Spring的切面,我们需要一个类一个类的加到切面上吗?答案肯定是不需要的?我们可以通过自定义一个注解。该注解为切点。方法上加该注解后,因切点为该注解那么该方法就自动加上了切面日志功能
示例:
第一题:在titles.add()时判断,该add的字段上注解有无自己定义的注解进行逻辑处理
第二题:@Pointcut("@annotation(MyLog)")切面业务就看自己的需求了这边不一一说明
方法上加@MyLog