- SpringBoot 2.x版本启用拦截器配置,会显示
WebMvcConfigurerAdapter将被抛弃,使用WebMvcConfigurationSupport替代会导致静态资源不能访问的问题。 - 发现只要继承 WebMvcConfigurationSupport 并且将文件加入配置 ,则在yml或properties中配置的相关内容会失效。
- 解决办法是需要重新指定静态资源。
示例如下
- 登录拦截器
@Component
public class BaseInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(BaseInterceptor.class);
private static final String USER_AGENT = "user-agent";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
String ip = IpUtil.getIpAddrByRequest(request);
logger.info("UserAgent: {}", request.getHeader(USER_AGENT));
logger.info("用户访问地址: {}, 来路地址: {}", uri, ip);
//请求拦截处理
HttpSession session = request.getSession();
User user = (User) session.getAttribute(WebConst.LOGIN_SESSION_KEY);
if (uri.startsWith("/admin") && !uri.startsWith("/admin/login") && null == user) {
response.sendRedirect(request.getContextPath() + "/admin/login");
return false;
}
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 {
}
}
- 拦截器配置类
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Resource
private BaseInterceptor baseInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(baseInterceptor);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
}
}

文件目录.png