简体   繁体   中英

Add external resources folder to Spring Boot

I'd like to add a resource folder relative to the location of the jar (in addition to packaged resources within my jar), for example:

/Directory
    Application.jar
    /resources
        test.txt

I've tried the following:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**")
            .addResourceLocations("/resources/", "file:/resources/");
}

I've also tried:

.addResourceLocations("/resources/", "file:resources/");

Accessing http://localhost:8080/resources/test.txt with either setup leads to a whitelabel error page. How can I resolve this?

Your second approach would work:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**")
            .addResourceLocations("/resources/", "file:resources/");
}

but only if you launched Spring Boot from /Directory , because file:resources/ is a relative path.

cd Directory
java -jar Application.jar

It's nice if you can pack everything into the jar, but if you have to reference external resources, you should use absolute paths to avoid problems like this.

 @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
            .addResourceHandler("/files/**")
            .addResourceLocations("file:/location1/", "file:/location2/");
}

access file using http://localhost :{port}/files/image.png

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM