Spring Boot 添加拦截器 Interceptor
Spring Boot 添加拦截器 Interceptor一、Spring Boot 添加拦截器步骤1、创建一个类 LogInterceptor 实现 HandlerInterceptor 接口 ,重新拦截器中3个方法,这里和SpringMVC中没有区别,拦截器各个方法作用这里。import java.lang.reflect.Method;import javax.servlet.http.Ht
·
Spring Boot 添加拦截器 Interceptor
一、Spring Boot 添加拦截器步骤
1、创建一个类 LogInterceptor 实现 HandlerInterceptor 接口 ,重新拦截器中3个方法,这里和SpringMVC中没有区别,拦截器各个方法作用这里。
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import lombok.extern.slf4j.Slf4j;
import xyz.annotation.LogRecord;
import xyz.utils.LogUtils;
/**
* description: 日志拦截器
* @version v1.0
* @author w
* @date 2021年2月27日下午7:37:28
**/
@Slf4j
@Component
public class LogInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
LogRecord annotation = method.getAnnotation(LogRecord.class);
if(null != annotation) {
String record = annotation.record();
String num = annotation.num();
// 进行日志记录
LogUtils.saveLog(record, num);
}
}
}
}
2、创建 InterceptorConfig 类 继承 WebMvcConfigurationSupport 类,注册已经配置的拦截器。
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
/**
* description: 配置拦截器
* @version v1.0
* @author w
* @date 2021年2月27日下午8:54:58
**/
@Component
public class InterceptorConfig extends WebMvcConfigurationSupport {
@Resource
private LogInterceptor logInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor)
.addPathPatterns("/**") // 拦截所有请求
.excludePathPatterns("/static/**"); // 静态资源过滤
super.addInterceptors(registry);
}
}
二、总结一下
1、实现 HandlerInterceptor 接口,按照需求重写拦截方法
2、继承 WebMvcConfigurationSupport 类, 注册拦截器。
3、注册拦截器步骤,等价于 springmvc.xml 中 <mvc:interceptors> 标签,如:
<mvc:interceptors>
<!-- LogInterceptor -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="logInterceptor" class="com.runcode.interceptor.LogInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
参考资料: SpringMVC 拦截器使用方法
更多推荐
已为社区贡献11条内容
所有评论(0)