Commit 9ac64857 authored by Andy Wilkinson's avatar Andy Wilkinson

Prioritise static resource locations over classpath for favicon.ico

Closes gh-17922
parent 55c6ee71
...@@ -336,10 +336,18 @@ public class WebMvcAutoConfiguration { ...@@ -336,10 +336,18 @@ public class WebMvcAutoConfiguration {
@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true) @ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
public static class FaviconConfiguration implements WebMvcConfigurer { public static class FaviconConfiguration implements WebMvcConfigurer {
private final ResourceProperties resourceProperties;
FaviconConfiguration(ResourceProperties resourceProperties) {
this.resourceProperties = resourceProperties;
}
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("favicon.ico")) { if (!registry.hasMappingForPattern("favicon.ico")) {
registry.addResourceHandler("favicon.ico").addResourceLocations("classpath:favicon.ico"); registry.addResourceHandler("favicon.ico")
.addResourceLocations(this.resourceProperties.getStaticLocations())
.addResourceLocations("classpath:favicon.ico");
} }
} }
......
...@@ -380,8 +380,11 @@ class WebMvcAutoConfigurationTests { ...@@ -380,8 +380,11 @@ class WebMvcAutoConfigurationTests {
@Test @Test
void faviconMapping() { void faviconMapping() {
this.contextRunner this.contextRunner.run((context) -> {
.run((context) -> assertThat(getResourceMappingLocations(context).get("/favicon.ico")).hasSize(1)); List<Resource> favIconResources = getResourceMappingLocations(context).get("/favicon.ico");
assertThat(favIconResources.stream().map(ClassPathResource.class::cast).map(ClassPathResource::getPath))
.containsExactly("META-INF/resources/", "resources/", "static/", "public/", "favicon.ico");
});
} }
@Test @Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment