业务场景
为了便于SpringBoot打包后.动态添加静态资源.因此将其静态资源文件夹指向本地磁盘位置
代码示例
通过实现 WebMvcConfigurer
接口的 `addResourceHandlers`` 方法,动态添加解析路径和对应的磁盘位置.
@Configuration
public class StaticResourceConfigurer implements WebMvcConfigurer {
/** 存放ICON图标的文件目录 */
@Value("${guider.file.filepath}")
private String fileRootPath;
/**
* 添加本地文件位置到静态资源URL映射
* @param registry 注册类
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/icons/**")
.addResourceLocations(ResourceUtils.FILE_URL_PREFIX + this.fileRootPath + "\\icons\\");
}
}
属性文件中.
guider.file.filepath=G:\\Store\\guider\\
问题.
资源文件并未找到.
排查
在 org.springframework.web.servlet.resource.ResourceHttpRequestHandler
类的 handleRequest
方法中打入断点.查看是否文件找到.
进入方法 getResource
, 其通过调用 org.springframework.web.servlet.resource.PathResourceResolver
类的 getResource
方法 ,传入资源文件夹和目标资源位置,进行匹配 .
我们可以在这里看到自己设置的文件的位置是否与实际相同.