Spring Boot拦截器无论如何都被称为排除模式

时间:2019-01-18 11:52:41

标签: java spring spring-boot interceptor

已将拦截器注册到:

@Override
protected void addInterceptors(final InterceptorRegistry registry) {
    registry.addInterceptor(new ThymeleafLayoutInterceptor()).addPathPatterns("/**").excludePathPatterns("/json/**").excludePathPatterns("/static/**");
}

据我了解,拦截器应针对每个请求而被调用,但对于具有
/ static /

/ json / 在他们的路径中。 但是,拦截器似乎是从每种资源中调用的,也都是从路径中具有静态的资源调用的。

拦截器的PostHandle方法中的打印输出

final ResourceHttpRequestHandler h = (ResourceHttpRequestHandler) handler;
System.out.println(h.getLocations());

结果

[class path resource [static/]]

我尝试了类似的模式
 1. / static / **
 2. / static / *,
 3. / static /
4.静态/

这怎么可能?我该如何解决该问题?

1 个答案:

答案 0 :(得分:1)

您两次调用excludePathPatterns。

这应该可以完成

@Override
protected void addInterceptors(final InterceptorRegistry registry) {
    registry.addInterceptor(new ThymeleafLayoutInterceptor())
            .addPathPatterns("/**")
            .excludePathPatterns("/json/**", "/static/**");
}