Springboot——拦截器
拦截器的实现很简单,分两步骤
1.新建Interceptor拦截器并实现HandleInterceptor接口
依次实现HandleInterceptor默认三个接口(前置处理方法、中间处理方法、后置处理方法)
2.将Interceptor拦截器注入容器中
我们将“统计接口执行耗时时间”作为demo进行讲解:
1.拦截器实现代码
/**
* @description:
* @author: 梦想的边缘
* @create: 2021/08/11 14:18
*/
public class BaseInterceptor implements HandlerInterceptor {
Logger logger = LoggerFactory.getLogger(BaseInterceptor.class);
//请求开始时间
long startTime;
//请求结束时间
long endTime;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
startTime = System.currentTimeMillis();
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
endTime=System.currentTimeMillis();
String method = request.getMethod();
String requestURI = request.getRequestURI();
logger.info("接口耗时统计,接口名:{},time:{}",method+":"+requestURI,endTime-startTime);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2.拦截器配置类
/**
* @description:
* @author: 最初的梦想
* @create: 2021/08/11 16:55
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截所有请求接口
registry.addInterceptor(new BaseInterceptor()).addPathPatterns("/*");
}
}
3.测试验证
启动项目,请求任意接口,打印日志如图:
INFO 61141 --- [nio-8801-exec-3] c.f.boot.interceptor.BaseInterceptor : 接口耗时统计,接口名:GET:/login,time:4
我们可以通过**“接口名:GET:/login,time:4”**信息分析接口耗时时间