Spring Boot 后端技术之 Interceptor

发布于 更新于
本文目录
  1. Interceptor简介
  2. Iterceptor使用方式
  3. Interceptor代码演示
  4. Interceptor在项目中的应用

技术文章测试开发

俗称拦截器,基于Spring MVC,主要对Controller中的Action进行拦截

Interceptor简介

  • 俗称拦截器,基于Spring MVC,主要对Controller中的Action进行拦截

  • Interceptor拦截后,可决定是否执行Action中的业务逻辑

  • 类似于Filter,可定义并注册多个Interceptor

  • 主要应用场景:

    • 日志记录

    • 权限检查

    • 性能监控

    • ...

Iterceptor使用方式

  • 使用步骤:

    1. 自定义Interceptor 1.1、实现HandlerInterceptor接口 1.2、添加@Component注解,将其注入到Spring容器 1.3、覆写接口的三个方法: preHandle:方法被处理之前调用,返回一个布尔型的值 返回true,拦截后,继续调用Action 返回false,拦截后,中断Action的调用,Action的逻辑不会被执行 postHandle:方法被处理没有异常后调用 afterCompletion:方法被处理之后调用,不管是否有异常,都会被调用

    2. 注册Interceptor 2.1、自定义Web配置类,实现WebMvcConfigurer接口,并添加@Component注解;一个Spring Boot项目一般只有一个Web配置类 2.2、覆写addInterceptors方法,在此方法中,将需要拦截的URL(即Action)关联到自定义的Interceptor 此时,Interceptor即可生效,访问拦截的URL,将会执行拦截器中逻辑

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

继续阅读