springboot实现拦截器

在springboot中实现拦截器分为两步:

1、创建普通拦截器,需要实现HandlerInterceptor并重写接口中相关方法;

2、将上一步创建的拦截器加入到springboot配置中,配置拦截规则

下面是相关代码和demo请求:

定义一个普通拦截器:

复制代码
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class DemoInterceptor implements HandlerInterceptor {


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}
复制代码
复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Autowired
    private DemoInterceptor demoInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(demoInterceptor)  // 添加拦截器
                .addPathPatterns("/**")   // 拦截所有请求
                .excludePathPatterns("/login");  // 登陆请求不需要
    }
}
复制代码

apifox请求

 

控制台打印

 拦截器的典型使用场景如下:

1、权限检查,用于用户登录状态检查;

2、日志记录,记录有些接口的请求日志信息,便于信息监控

3、统一安全处理:可用于同意安全校验或参数的加解密等。

拦截器底层原理,也是利用了springAOP的面向切面编程。而AOP又是基于动态代理实现,常用的是JDK动态代理(基于反射的思想实现)

 

posted @   多多指教~  阅读(172)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示