一、使用注解和拦截器
为什么使用拦截器而不是用过滤器呢?
- 拦截器是基于Java的反射机制的,而过滤器是基于函数回调。
- 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
- 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
- 拦截器可以访问action上下文、值栈里的对象。
1、添加注解
1 |
|
2、添加拦截器
根据自己的开发环境选择拦截器的注册方式
2.1 springmvc 版。
1 | <!-- 拦截器 --> |
2.2 springboot 版。
如果没法被扫描那就加扫描呗。当然也可以在META-INF下添加spring.factories来配置类路径
1 |
|
3、拦截器的实现是需要实现HandlerInterceptor的三个方法(preHandle、afterCompletion、postHandle)。
3.1 preHandle 请求前
1 | /** |
3.2 postHandle 请求时拦截
1 | /** |
3.3 afterCompletion 返回拦截
1 | /** |
4.1 触发实现
1 | public class test{ |
二、使用aop和注解
1.添加注解(参考上面)
2.添加切面
2.1添加jar
1
2
3
4 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.2采用切面来做aop处理
1 |
|
3.最终实现
1 | public class test{ |