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 {
@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
public static class FaviconConfiguration implements WebMvcConfigurer {
private final ResourceProperties resourceProperties;
FaviconConfiguration(ResourceProperties resourceProperties) {
this.resourceProperties = resourceProperties;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
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 {
@Test
void faviconMapping() {
this.contextRunner
.run((context) -> assertThat(getResourceMappingLocations(context).get("/favicon.ico")).hasSize(1));
this.contextRunner.run((context) -> {
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
......
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