我想添加一个相对于jar位置的资源文件夹(除了jar中的打包资源),例如:
/Directory
Application.jar
/resources
test.txt
我尝试过以下方法:
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/", "file:/resources/");
}
我也尝试过:
.addResourceLocations("/resources/", "file:resources/");
使用任一设置访问http://localhost:8080/resources/test.txt
都会出现白标错误页面。我该如何解决这个问题?
答案 0 :(得分:14)
你的第二种方法可行:
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/", "file:resources/");
}
但仅如果您从/Directory
启动了Spring Boot,因为file:resources/
是相对路径。
cd Directory
java -jar Application.jar
如果您可以将所有内容打包到jar中,这很好,但如果您必须引用外部资源,则应使用absolute paths来避免此类问题。
答案 1 :(得分:0)
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/files/**")
.addResourceLocations("file:/location1/", "file:/location2/");
}
使用http://localhost访问文件:{port} /files/image.png