Annotation Configuration Replacement for mvc:resources - Spring

I'm trying to upgrade my spring mvc project to utilize the new annotations and get rid of my xml. Previously I was loading my static resources in my web.xml with the line:

<mvc:resources mapping="/resources/**" location="/resources/" /> 

Now, I'm utilizing the WebApplicationInitializer class and @EnableWebMvc annotation to startup my service without any xml files, but can't seem to figure out how to load my resources.

Is there an annotation or new configuration to pull these resources back in without having to use xml?


Solution 1:

For Spring 3 & 4:

One way to do this is to have your configuration class extend WebMvcConfigurerAdapter, then override the following method as such:

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

Solution 2:

Spring 5

As of Spring 5, the correct way to do this is to simply implement the WebMvcConfigurer interface.

For example:

@Configuration
@EnableWebMvc
public class MyApplication implements WebMvcConfigurer {

    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
}

See deprecated message in: WebMvcConfigurerAdapter