自己摘抄学习用,如果觉得有用,请进原文链接给作者点赞。
参考文章:
1. Java自定义注解_搬砖大强的博客-CSDN博客_java自定义注解
2. Springboot 拦截器(Interceptor)详解_、楽.的博客-CSDN博客_拦截器放行到指定接口
参考代码:
GitHub - wangzhiqiang1008/common-framework
最新更新于2022.8.18
一、简介
注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。
1、元注解
元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:
- @Target
- @Retention
- @Documented
- @Inherited
下面我们看一下每个元注解的作用和相应分参数的使用说明。
2.1、@Target
表明该注解可以应用的java元素类型:
2.2、@Retention
表明该注解的生命周期
2.3、@Document
表明该注解标记的元素可以被Javadoc 或类似的工具文档化。
2.4、@Inherited
表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解。
2、自定义注解
修饰符: 访问修饰符必须为public,不写默认为pubic;
关键字: 关键字为@interface;
注解名称: 注解名称为自定义注解的名称,使用时还会用到;
注解内容: 注解中内容,对注解的描述。
3、静态拦截
3.1 自定义注解
3.2 数据模型使用注解
3.3 工厂获得时拦截
运行的代码
结果
4、Aspect拦截
首先要自定义注解MyAnnotation,这里不赘述了。之后编写Aspect注册切入点。
PS:如果增强方式选择around,需要主动return返回值。在这种情况下方法不是被"拦截",应该叫被"劫持"。
5、Interceptor拦截
interceptor本身是属于SpringMVC模块中的内容,更多是针对HTTP链接进行链接,他在整体框架中的位置如下图:
1)注册和映射
有两种注册方式,本质是一种。第一种是在spring MVC配置文件中写:
第二种是利用配置类:
2)编写Interceptor
继承HandlerInterceptorAdapter,重写preHandle、postHandle和afterCompletion方法
3)指定Interceptor拦截的接口
那么如何指定拦截的接口呢?假如我们有一个接口