spring boot拦截器
拦截器是AOP的一种方式,它的实现很简单,实现HandlerInterceptor接口,然后在继承WebMvcConfigurationSupport类配置一下拦截规则即可;
一、HandlerInterceptor接口的实现
实例:
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;
public class AuditInterceptor implements HandlerInterceptor {
//preHandle是在请求执行前执行的
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("此山是我开!");
return true;
}
//postHandler是在请求结束之后,视图渲染之前执行的,但只有preHandle方法返回true的时候才会执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
System.out.println("此树是我栽!");
}
//afterCompletion是视图渲染完成之后才执行,同样需要preHandle返回true,
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
//该方法通常用于清理资源等工作
System.out.println("要想过此路,留下买路财!");
}
}
二、拦截规则的配置
实例:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//这里可以用registry.addInterceptor添加多个拦截器实例,后面加上匹配模式,这个是拦截所有请求
registry.addInterceptor(new AuditInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}