From 5401327e4d95c89cba6ce44b8c2b5d0ce1d04bf0 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 10 Apr 2025 14:46:48 +0200 Subject: [PATCH] Polish "Add missing attributes to ServletRegistration annotation" See gh-45007 --- .../boot/web/servlet/ServletRegistration.java | 8 +-- .../ServletContextInitializerBeansTests.java | 51 +++++-------------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletRegistration.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletRegistration.java index e054a8b9e3..06d787a647 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletRegistration.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletRegistration.java @@ -91,14 +91,14 @@ public @interface ServletRegistration { int loadOnStartup() default -1; /** - * Init parameters to set on the servlet (mirrors {@code @WebInitParam} usage). - * @return array of {@link WebInitParam} + * Init parameters to be used with the servlet. + * @return the init parameters */ WebInitParam[] initParameters() default {}; /** - * Multipart configuration. - * @return multipart config {@link MultipartConfig} + * The multipart configuration. + * @return the multipart configuration */ MultipartConfig multipartConfig() default @MultipartConfig; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletContextInitializerBeansTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletContextInitializerBeansTests.java index c0e5a5e87e..c1cafa0c47 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletContextInitializerBeansTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletContextInitializerBeansTests.java @@ -129,6 +129,13 @@ class ServletContextInitializerBeansTests { assertThat(servletRegistrationBean.getServletName()).isEqualTo("test"); assertThat(servletRegistrationBean.isAsyncSupported()).isFalse(); assertThat(servletRegistrationBean.getUrlMappings()).containsExactly("/test/*"); + assertThat(servletRegistrationBean.getInitParameters()) + .containsExactlyInAnyOrderEntriesOf(Map.of("env", "test", "debug", "true")); + assertThat(servletRegistrationBean.getMultipartConfig()).isNotNull(); + assertThat(servletRegistrationBean.getMultipartConfig().getLocation()).isEqualTo("/tmp"); + assertThat(servletRegistrationBean.getMultipartConfig().getMaxFileSize()).isEqualTo(1024); + assertThat(servletRegistrationBean.getMultipartConfig().getMaxRequestSize()).isEqualTo(4096); + assertThat(servletRegistrationBean.getMultipartConfig().getFileSizeThreshold()).isEqualTo(128); }); } @@ -209,29 +216,6 @@ class ServletContextInitializerBeansTests { .isEqualTo(ServletConfigurationWithAnnotationAndOrder.ORDER)); } - @Test - void shouldApplyExtendedServletRegistrationAnnotation() { - load(ServletConfigurationWithExtendedAttributes.class); - ServletContextInitializerBeans initializerBeans = new ServletContextInitializerBeans( - this.context.getBeanFactory(), TestServletContextInitializer.class); - assertThatSingleServletRegistration(initializerBeans, (bean) -> { - assertThat(bean.getServletName()).isEqualTo("extended"); - assertThat(bean.getUrlMappings()).containsExactly("/extended/*"); - assertThat(bean.getInitParameters()).containsEntry("hello", "world").containsEntry("flag", "true"); - assertThat(bean.getMultipartConfig()).isNotNull(); - assertThat(bean.getMultipartConfig().getLocation()).isEqualTo("/tmp"); - assertThat(bean.getMultipartConfig().getMaxFileSize()).isEqualTo(1024); - assertThat(bean.getMultipartConfig().getMaxRequestSize()).isEqualTo(4096); - assertThat(bean.getMultipartConfig().getFileSizeThreshold()).isEqualTo(128); - }); - - } - - private void assertThatSingleServletRegistration(ServletContextInitializerBeans initializerBeans, - ThrowingConsumer> code) { - assertThatSingleRegistration(initializerBeans, ServletRegistrationBean.class, code::acceptThrows); - } - private void load(Class... configuration) { this.context = new AnnotationConfigApplicationContext(configuration); } @@ -269,7 +253,11 @@ class ServletContextInitializerBeansTests { @Bean @ServletRegistration(enabled = false, name = "test", asyncSupported = false, urlMappings = "/test/*", - loadOnStartup = 1) + loadOnStartup = 1, + initParameters = { @WebInitParam(name = "env", value = "test"), + @WebInitParam(name = "debug", value = "true") }, + multipartConfig = @MultipartConfig(location = "/tmp", maxFileSize = 1024, maxRequestSize = 4096, + fileSizeThreshold = 128)) TestServlet testServlet() { return new TestServlet(); } @@ -479,19 +467,4 @@ class ServletContextInitializerBeansTests { } - @Configuration(proxyBeanMethods = false) - static class ServletConfigurationWithExtendedAttributes { - - @Bean - @ServletRegistration(name = "extended", urlMappings = "/extended/*", - initParameters = { @WebInitParam(name = "hello", value = "world"), - @WebInitParam(name = "flag", value = "true") }, - multipartConfig = @MultipartConfig(location = "/tmp", maxFileSize = 1024, maxRequestSize = 4096, - fileSizeThreshold = 128)) - TestServlet testServletWithInitParametersAndMultipart() { - return new TestServlet(); - } - - } - }