自定义注解的意义
自定义注解可以使一些计算、验证、权限等逻辑与实际的业务逻辑分离,使代码更优雅,耦合度更低
自定义注解的语法
自定义注解的使用其实很简单,一般需要下面两步既可以完成
- 在新建一个注解,和新建一个类非常相似
- 在这个类上面加上元注解,所谓的元注解就是注解的注解,是JDK里面已经定义好的注解。比如我们经常见到的
@Override
、@Deprecated
、@SuppressWarnings(
。在自定义注解的时候,通常我们需要四个元注解,如下所示
注解 | 意义 |
---|---|
@Retention | 通过字面意思应该知道就是这个注解保留到什么时候 |
@Target | 作用在什么之上,比如类,方法,字段,参数等 |
@Documented | 用于生成javadoc,不怎么常用 |
@Inherited | 是否可以被子类继承,不常用 |
@Retention注解点进去发现,可选择的值是RetentionPolicy枚举,里面的值是SOURCE、CLASS、RUNTIME,表示可以保留到这三个级别
@Target可以多选,点进去源码可以发现可选择的值也是枚举类,分别有TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR等
自定义注解的完整代码示例
package com.example.annotaion;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//注解保留到什么时候
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface CacheResult {
//缓存key
String key();
//缓存名称
String cacheName();
//过期时间
String expireDate() default "";
//是否过期
boolean expire() default false;
}