springboot静态资源拦截
时间: 2023-11-26 10:48:27 浏览: 84
在Spring Boot 2.x中,静态资源会被HandlerInterceptor拦截,这是因为Spring Boot 2.x默认使用了WebMvcConfigurerAdapter,而WebMvcConfigurerAdapter会拦截所有的请求,包括静态资源的请求。解决这个问题的方法是,继承WebMvcConfigurationSupport类,并重写addResourceHandlers方法,将静态资源的路径添加到静态资源处理器中。具体实现代码如下所示:
```java
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
}
}
```
其中,addResourceHandler方法用于指定静态资源的访问路径,addResourceLocations方法用于指定静态资源的存放路径。上述代码中,静态资源的访问路径为“/static/**”,静态资源的存放路径为“classpath:/static/”。
相关问题
springboot 静态资源映射,configuration,addResourceHandlers如何添加拦截器
Spring Boot 中的静态资源映射通常是通过`WebMvcConfigurer`接口或者在`spring.mvc.static-path-pattern`属性中配置来处理的。当你想要添加拦截器到静态资源请求时,可以按照以下步骤操作:
1. **使用`WebMvcConfigurerAdapter`**:
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class StaticResourcesConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/")
.setOrder(Ordered.HIGHEST_PRECEDENCE)
// 添加拦截器
.addInterceptors(new MyInterceptor());
}
// 自定义拦截器
private static class MyInterceptor implements HandlerInterceptor {
// 实现preHandle、postHandle和afterCompletion方法
// ...
}
}
```
2. **使用@ConfigurationProperties**: 如果你想动态配置拦截器,可以使用`@ConfigurationProperties`注解将配置移到外部如YAML文件中。
3. **创建自定义拦截器**:
创建一个实现了`HandlerInterceptor`接口的类,比如上面提到的`MyInterceptor`,在这个类里编写预处理(`preHandle`)、处理(`postHandle`)以及后续处理(`afterCompletion`)的方法,以定制对静态资源的拦截逻辑。
springboot拦截静态资源
Spring Boot 会默认拦截/static、/public、/resources和/META-INF/resources 目录下的静态资源,如果需要自定义静态资源的路径,则需要在application.properties文件中添加以下配置:spring.mvc.static-path-pattern=/customPath/**,其中/customPath/为自定义的路径。
阅读全文