日常开发过程中,面临着对前台数据的检查的日志处理中。或我们需要对某个请求进行放行和拦截,就需要用到我们的自定义注解来实现拦截的功能。
各注解:
@Retention 作用是定义被它所注解的注解保留多久,一共有三种策略,定义在RetentionPolicy枚举中:
1.SOURCE 被编译器忽略
2.CLASS 注解将会被保留在Class文件中,但在运行时并不会被VM保留。这是默认行为,所有没有用Retention注解的注解,都会采用这种策略。
3.RUNTIME 保留至运行时。所以我们可以通过反射去获取注解信息。
@Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 Documented,则它会被 javadoc 之类的工具处理
@Target 性质和Rentention一样,都是注解类的属性,表示注解类应该在什么位置,对那一块的数据有效。例如,@Target(ElementType.METHOD)
Target内部的值使用枚举ElementType表示,表示的主要位置有:注解、构造方法、属性、局部变量、函数、包、参数和类(默认值)。多个位置使用数组,例如,@Target({ElementType.METHOD,ElementType.TYPE})。
类、接口、枚举、注解这一类事物用TYPE表示,Class的父类,JDK1.5的新特性。
下面是日常开发的一个针对接口访问请求是否拦截的自定义注解功能:
第一步:自定义注解 UserAuth
第二步:新建拦截请求逻辑的拦截器
第三步:执行拦截器配置中将此拦截器添加进去
此处需要注意,当注解上没有特定method和type的时候。
在如果,在具体业务中,需要将注解加在类上和方法上时,需要根据不同的method/type去判断下。