diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java index a60c28e8f96..f593c8a6def 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java @@ -122,6 +122,9 @@ public class WebMvcAutoConfiguration { @Value("${spring.view.suffix:}") private String suffix = ""; + @Value("${spring.resources.cachePeriod:}") + private Integer cachePeriod; + @Autowired private ListableBeanFactory beanFactory; @@ -193,12 +196,14 @@ public class WebMvcAutoConfiguration { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!registry.hasMappingForPattern("/webjars/**")) { - registry.addResourceHandler("/webjars/**").addResourceLocations( - "classpath:/META-INF/resources/webjars/"); + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/") + .setCachePeriod(this.cachePeriod); } if (!registry.hasMappingForPattern("/**")) { - registry.addResourceHandler("/**").addResourceLocations( - RESOURCE_LOCATIONS); + registry.addResourceHandler("/**") + .addResourceLocations(RESOURCE_LOCATIONS) + .setCachePeriod(this.cachePeriod); } } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/AutoConfigurationReportLoggingInitializerTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/AutoConfigurationReportLoggingInitializerTests.java index f268bad3dda..121d2e6ea10 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/AutoConfigurationReportLoggingInitializerTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/AutoConfigurationReportLoggingInitializerTests.java @@ -208,7 +208,9 @@ public class AutoConfigurationReportLoggingInitializerTests { } @Configuration - @Import({ WebMvcAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class }) + @Import({ WebMvcAutoConfiguration.class, + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class }) static class Config { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mobile/DeviceResolverAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mobile/DeviceResolverAutoConfigurationTests.java index 138dd78999b..9106e735a07 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mobile/DeviceResolverAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mobile/DeviceResolverAutoConfigurationTests.java @@ -21,6 +21,7 @@ import java.util.List; import org.junit.After; import org.junit.Test; +import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext; @@ -78,7 +79,8 @@ public class DeviceResolverAutoConfigurationTests { AnnotationConfigEmbeddedWebApplicationContext context = new AnnotationConfigEmbeddedWebApplicationContext(); context.register(Config.class, WebMvcAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, - DeviceResolverAutoConfiguration.class); + DeviceResolverAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); context.refresh(); RequestMappingHandlerMapping mapping = (RequestMappingHandlerMapping) context .getBean("requestMappingHandlerMapping"); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfigurationTests.java index 1a57aeb6215..c776ad28ee6 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfigurationTests.java @@ -28,6 +28,7 @@ import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext; import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; @@ -78,7 +79,8 @@ public class WebMvcAutoConfigurationTests { public void handerAdaptersCreated() throws Exception { this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context.register(Config.class, WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class); + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); assertEquals(3, this.context.getBeanNamesForType(HandlerAdapter.class).length); assertFalse(this.context.getBean(RequestMappingHandlerAdapter.class) @@ -92,7 +94,8 @@ public class WebMvcAutoConfigurationTests { public void handerMappingsCreated() throws Exception { this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context.register(Config.class, WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class); + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); assertEquals(6, this.context.getBeanNamesForType(HandlerMapping.class).length); } @@ -101,7 +104,8 @@ public class WebMvcAutoConfigurationTests { public void resourceHandlerMapping() throws Exception { this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context.register(Config.class, WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class); + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); Map> mappingLocations = getMappingLocations(); assertThat(mappingLocations.get("/**").size(), equalTo(5)); @@ -114,7 +118,8 @@ public class WebMvcAutoConfigurationTests { public void resourceHandlerMappingOverrideWebjars() throws Exception { this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context.register(WebJars.class, Config.class, WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class); + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); Map> mappingLocations = getMappingLocations(); assertThat(mappingLocations.get("/webjars/**").size(), equalTo(1)); @@ -127,7 +132,8 @@ public class WebMvcAutoConfigurationTests { this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context.register(AllResources.class, Config.class, WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class); + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); Map> mappingLocations = getMappingLocations(); assertThat(mappingLocations.get("/**").size(), equalTo(1));