diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration.java index ffda8ec1c66..afe5b6ebf07 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration.java @@ -69,6 +69,7 @@ import org.springframework.web.reactive.result.method.annotation.ArgumentResolve import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter; import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.reactive.result.view.ViewResolver; +import org.springframework.web.server.i18n.LocaleContextResolver; /** * {@link EnableAutoConfiguration Auto-configuration} for {@link EnableWebFlux WebFlux}. @@ -264,6 +265,13 @@ public class WebFluxAutoConfiguration { return super.createRequestMappingHandlerMapping(); } + @Bean + @Override + @ConditionalOnMissingBean + public LocaleContextResolver localeContextResolver() { + return super.localeContextResolver(); + } + } @Configuration(proxyBeanMethods = false) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java index 65a4ecad6ba..17fb6d56ef8 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java @@ -73,6 +73,8 @@ import org.springframework.web.reactive.result.method.annotation.RequestMappingH import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.reactive.result.view.ViewResolutionResultHandler; import org.springframework.web.reactive.result.view.ViewResolver; +import org.springframework.web.server.i18n.AcceptHeaderLocaleContextResolver; +import org.springframework.web.server.i18n.LocaleContextResolver; import org.springframework.web.util.pattern.PathPattern; import static org.assertj.core.api.Assertions.assertThat; @@ -452,6 +454,13 @@ class WebFluxAutoConfigurationTests { }); } + @Test + void customLocaleContextResolver() { + this.contextRunner.withUserConfiguration(LocaleContextResolverConfiguration.class) + .run((context) -> assertThat(context).hasSingleBean(LocaleContextResolver.class) + .hasBean("customLocaleContextResolver")); + } + private Map getHandlerMap(ApplicationContext context) { HandlerMapping mapping = context.getBean("resourceHandlerMapping", HandlerMapping.class); if (mapping instanceof SimpleUrlHandlerMapping) { @@ -676,4 +685,14 @@ class WebFluxAutoConfigurationTests { } + @Configuration(proxyBeanMethods = false) + static class LocaleContextResolverConfiguration { + + @Bean + LocaleContextResolver customLocaleContextResolver() { + return new AcceptHeaderLocaleContextResolver(); + } + + } + }