将外部资源文件夹添加到Spring Boot

时间:2015-09-01 19:09:42

标签: java spring spring-mvc spring-boot

我想添加一个相对于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都会出现白标错误页面。我该如何解决这个问题?

2 个答案:

答案 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