SpringBoot 使用 WebMvcConfigurer接口或者WebMvcConfigureSupport定义静态资源地址不生效
最近开始开发一个古老的项目,用spring boot打jar包部署到服务器,本来想用nginx做资源映射,尝试了不生效,后来改用配置WebMvcConfigurationSupport做请求映射
代码 代码片
.
@Configuration
public class WebAppConfig extends WebMvcConfigurationSupport {
@Value(value = "${upload.path}")
private String uploadPath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 配置server虚拟路径,handler为前台访问的URL目录,locations为file相对应的本地路径
// 如果有一个 /img/aaa.png 请求,那程序会到后面的目录里面找aaa.png文
registry.addResourceHandler("/img/**").addResourceLocations("file:"+uploadPath");
}
}
这里的uploadPath是在application.yml文件定义好的
upload:
path: 写存放资源的地址
##尝试了多次,一直访问不到服务器上的资源,百度也查了很多,大部分都是说可能是权限框架的问题,我这里不是,打断点排查原因,发现没有加载到这个类,又去百度查原因,说需要在启动类加@ComponentScan去扫描,结果还是没有成功,又仔细看了一下所有的配置类,发现了还有一个配置类继承了WebMvcConfigurationSupport,这也就是为什么明明我写了资源文件映射却没有加载资源文件的原因。