https://www.cnblogs.com/shuaiandjun/p/7266183.html
待验证:
SpringBoot的拦截器实现和SpringMVC一致,就是配置方式不一样,完成代码如下:
- 1
一、新建两个拦截器类
package com.jd.m.tg.interceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 MyInterceptor implements HandlerInterceptor {
private static final Logger LOG= LoggerFactory.getLogger(MyInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
LOG.info("执行拦截器的preHandle方法");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
LOG.info("执行拦截器的postHandle方法");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
LOG.info("执行拦截器的afterCompletion方法");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
另一个拦截器类和该类内容一致;
二、拦截器配置类
package com.jd.m.tg.config;
import com.jd.m.tg.interceptor.MyInterceptor;
import com.jd.m.tg.interceptor.MyInterceptorTwo;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@AllArgsConstructor
public class InterceptorConfig extends WebMvcConfigurerAdapter{
private MyInterceptor myInterceptor;
private MyInterceptorTwo myInterceptorTwo;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptorTwo).addPathPatterns("/test/**");
registry.addInterceptor(myInterceptor).addPathPatterns("/test/**");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
拦截器的添加顺序就是执行顺序,如上所示,第一个拦截器是myInterceptorTwo,第二个拦截器是myInterceptor;
控制台执行日志如下:
c.jd.m.tg.interceptor.MyInterceptorTwo : 执行拦截器的preHandle方法
2017-12-19 11:18:50.237 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.MyInterceptor : 执行拦截器的preHandle方法
2017-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.MyInterceptor : 执行拦截器的postHandle方法
2017-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] c.jd.m.tg.interceptor.MyInterceptorTwo : 执行拦截器的postHandle方法
2017-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.MyInterceptor : 执行拦截器的afterCompletion方法
2017-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] c.jd.m.tg.interceptor.MyInterceptorTwo : 执行拦截器的afterCompletion方法
- 1
- 2
- 3
- 4
- 5
- 6