Springboot 增加拦截器及释放静态资源及映射虚拟路径的方法

时间:2024-05-10 21:04:43 类型:JAVA
字号:    

Springboot 增加拦截器及释放静态资源的方法

@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置拦截器
        registry.addInterceptor(new MyInterceptor())
                //对所有的资源进行拦截,包括静态资源
                .addPathPatterns("/**")
                .excludePathPatterns("/js/**", "/images/**","/css/**","/upload/**");
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //映射虚拟路径
        registry.addResourceHandler("/upload/**").addResourceLocations("file:E:\\java\\uploads\\");
    }
}

yml配置映射路径:

spring:
  web:
    resources:
      static-locations: file:E:\\java\\uploads\\,classpath:/static/
  mvc:
    static-path-pattern: /static/**
#    这样配置后,所有以/atts/开头的URL都会被映射到file:E:\\java\\uploads\\目录下的资源。

注意:如上在yml文件中配置了静态资源后,那么所有的静态资源访问前缀变成 /atts/, 那么拦截排除时,只需要排除 /atts即可,如下

@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
    @Resource
    private MyInterceptor myInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 实现WebMvcConfigurer不会导致静态资源被拦截
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/static/**");
    }
}
<link rel="stylesheet" href="/static/images/global.css">
    <h1 class="red">测试一下</h1>
    <img src="/static/images/22.png" alt="">
    <img src="/static/2.webp" alt="">


<