diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java index 6b066e622f..5a5e3f8cf6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java @@ -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"); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java index 39c644d5b9..7d0510898f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java @@ -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 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