Interceptor简介
- 俗称拦截器,基于Spring MVC,主要对Controller中的Action进行拦截
- Interceptor拦截后,可决定是否执行Action中的业务逻辑
- 类似于Filter,可定义并注册多个Interceptor
- 主要应用场景:
- 日志记录
- 权限检查
- 性能监控
- ...
Iterceptor使用方式
- 使用步骤:
- 自定义Interceptor
1.1、实现HandlerInterceptor接口
1.2、添加@Component注解,将其注入到Spring容器
1.3、覆写接口的三个方法:
preHandle:方法被处理之前调用,返回一个布尔型的值
返回true,拦截后,继续调用Action
返回false,拦截后,中断Action的调用,Action的逻辑不会被执行
postHandle:方法被处理没有异常后调用
afterCompletion:方法被处理之后调用,不管是否有异常,都会被调用 - 注册Interceptor
2.1、自定义Web配置类,实现WebMvcConfigurer接口,并添加@Component注解;一个Spring Boot项目一般只有一个Web配置类
2.2、覆写addInterceptors方法,在此方法中,将需要拦截的URL(即Action)关联到自定义的Interceptor
此时,Interceptor即可生效,访问拦截的URL,将会执行拦截器中逻辑
- 自定义Interceptor
Interceptor代码演示
- 需求:
已有《用户信息》项目中,有UserController和ClassController两个控制器,实现对UserController控制器的所有Action的拦截,拦截后:
1、输出拦截日志信息
2、在preHandle中分别返回true和false,观察Action调用情况 - 具体代码见附件
Interceptor在项目中的应用
- 概述:
- 在企业级项目中,如果是自己写认证与授权功能,会结合登录信息(保存在会话)、自定义注解,实现接口的认证与授权
- 比如,示例《用户信息》的两个控制器的Action是所有人都能调用,并不符合企业实际接口的要求,一般的要求如:
1、所有Action必须登录后才能调用(除登录、注册的Action)
2、张三登录后,只能访问UserController的query方法(Action),而李四登录后,能访问UserController和ClassController的所有方法(Action)
附件:user.zip
欢迎来到testingpai.com!
注册 关于