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/** # 这样配置后,所有以/static/开头的URL都会被映射到file:E:\\java\\uploads\\目录下的资源。
注意:如上在yml文件中配置了静态资源后,那么所有的静态资源访问前缀变成 /static/, 那么拦截排除时,只需要排除 /static即可,如下
@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="">
方法三:
只拦截需要拦截的前缀,其它不需要排除
@Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //配置拦截器 registry.addInterceptor(new MyInterceptor()) //拦截以/admin/** 开头的资源进行拦截,其它不拦截 .addPathPatterns("/admin/**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //映射虚拟路径 registry.addResourceHandler("/upload/**").addResourceLocations("file:E:\\java\\uploads\\"); } }