Serving Static resources from file system | Spring Boot Web

spring-boot, spring-mvc

Solution

`file:///` is an absolute URL pointing to the root of the filesystem and, therefore, `file:///./ext-resources/` means that Spring Boot is looking for resources in a directory named `ext-resources` in the root.

Update your configuration to use something like `file:ext-resources/` as the URL.

Problem

Using a Spring Boot web application I trying to serve my static resource from a file system folder outside my project. Folder structure looks like:- ``` src main java resources test java resources pom.xml ext-resources (I want to keep my static resources here) test.js ``` Spring Configuration:- ``` @SpringBootApplication public class DemoStaticresourceApplication extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(DemoStaticresourceApplication.class, args); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/test/**").addResourceLocations("file:///./ext-resources/") .setCachePeriod(0); } } ``` Hitting 'http://localhost:9999/test/test.js' in my browser gives back a 404. How should I configure ResourceHandlerRegistry to serve static resources from the above mentioned 'ext-resources' folder? I should be able to switch cache on/off for dev/prod environment. Thanks UPDATE 1 Giving absolute file path works:- ``` @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/test/**") .addResourceLocations( "file:///C:/Sambhav/Installations/workspace/demo-staticresource/ext-resources/") .setCachePeriod(0); } ``` How can I provide relative location? Absolute path will make my life tough during build & deploy process.

Original source

Related problems