apachespring-mvcdropboxstatic-contentspring-boot

How do I use Spring Boot to serve static content located in Dropbox folder?


I have a Spring Boot web application, and I would like to serve static content located in a shared Dropbox directory on my Linode VPS (~/Dropbox/images). I've read that Spring Boot will automatically serve static content from

"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/",

but of course my Dropbox directory is not on the classpath.

Although I could configure Apache to serve the images in my Dropbox folder, I would like to take advantage of Spring Security to restrict access of the static content to authenticated users.


Solution

  • You can add your own static resource handler (it overwrites the default), e.g.

    @Configuration
    public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**").addResourceLocations("file:/path/to/my/dropbox/");
        }
    }
    

    There is some documentation about this in Spring Boot, but it's really just a vanilla Spring MVC feature.

    Also since spring boot 1.2 (I think) you can simply set spring.resources.staticLocations.