一、整合Filter
1、写一个自己的Filter
@Component
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("initFilter");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("doFilter...");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
2、写一个Config类
@Configuration
public class WebConfig {
@Autowired
private MyFilter myFilter;
public FilterRegistrationBean initFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(myFilter);
filterRegistrationBean.setName("MyFilter");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
二、整合Interceptor
1、写一个自己的Interceptor,当然这里preHandle等方法现在有默认实现,可以按需覆盖
@Component
public class MyInterceptor implements HandlerInterceptor {
@Autowired
private EverestConfig everestConfig;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return null != everestConfig.getImageServer();
}
@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 {
}
}
2、写一个config类
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/index/auth");
WebMvcConfigurer.super.addInterceptors(registry);
}
}
这里我们假设对所有的api接口做拦截,并放行鉴权的接口。