无论如何调用排除模式的 Spring Boot 拦截器

有一个拦截器注册到:


@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. static/


这怎么可能,我该如何纠正这个问题?


白衣染霜花
浏览 129回答 1
1回答

梦里花落0921

您正在调用 excludePathPatterns 两次。这应该做的工作@Overrideprotected void addInterceptors(final InterceptorRegistry registry) {    registry.addInterceptor(new ThymeleafLayoutInterceptor())            .addPathPatterns("/**")            .excludePathPatterns("/json/**", "/static/**");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java