Spring boot整合Spring mvc拦截器
目标:可以在spring boot项目中自定义spring mvc拦截器。
步骤:
配置spring mvc拦截器,编写Haderinterceptor拦截器,编写配置类实现WebMvcConfiguer。
创建类实现Haderinterceptor接口:
package com.dsr.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Slf4j//打印日志
public class MyInterceptor implements HandlerInterceptor {
//重写接口方法,选择重写方法时,快捷键ctrl+o
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("这是MyInterceptor类的preHandle方法");
//返回false拦截,测试时可以用true
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
log.debug("这是MyInterceptor类的postHandle方法");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
log.debug("这是MyInterceptor类的afterCompletion方法");
}
}
创建配置类实现WebMvcConfiguer:
package com.dsr.config;
import com.dsr.interceptor.MyInterceptor;
import org.springframework.context.annotation.Bean;
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 MvcConfig implements WebMvcConfigurer {
//注册拦截器到系统
@Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}
//添加拦截器到spring mvc拦截器链
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截所有请求路径
registry.addInterceptor(myInterceptor()).addPathPatterns("/*");
}
}
测试:
访问hello后经过拦截器,控制台打印该日志: