Multiple WebFlux ResourceHandlerRegistrationCustomizer should be invoked

Before this commit, only a single ResourceHandlerRegistrationCustomizer
was invoked. This commit adds functionality to have more
than one ResourceHandlerRegistrationCustomizers

See gh-43494
This commit is contained in:
Dmytro Nosan
2024-12-13 11:30:47 +02:00
committed by Moritz Halbritter
parent 8572d9e177
commit 1234409fbe
2 changed files with 38 additions and 11 deletions

View File

@@ -90,6 +90,7 @@ import org.springframework.web.reactive.HandlerMapping;
import org.springframework.web.reactive.accept.RequestedContentTypeResolver;
import org.springframework.web.reactive.config.BlockingExecutionConfigurer;
import org.springframework.web.reactive.config.DelegatingWebFluxConfiguration;
import org.springframework.web.reactive.config.ResourceHandlerRegistration;
import org.springframework.web.reactive.config.WebFluxConfigurationSupport;
import org.springframework.web.reactive.config.WebFluxConfigurer;
import org.springframework.web.reactive.function.server.support.RouterFunctionMapping;
@@ -122,6 +123,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
/**
* Tests for {@link WebFluxAutoConfiguration}.
@@ -182,6 +184,18 @@ class WebFluxAutoConfigurationTests {
});
}
@Test
void shouldCustomizeResources() {
this.contextRunner.withUserConfiguration(ResourceHandlerRegistrationCustomizers.class).run((context) -> {
ResourceHandlerRegistrationCustomizer customizer1 = context
.getBean("firstResourceHandlerRegistrationCustomizer", ResourceHandlerRegistrationCustomizer.class);
ResourceHandlerRegistrationCustomizer customizer2 = context
.getBean("secondResourceHandlerRegistrationCustomizer", ResourceHandlerRegistrationCustomizer.class);
then(customizer1).should(times(2)).customize(any(ResourceHandlerRegistration.class));
then(customizer2).should(times(2)).customize(any(ResourceHandlerRegistration.class));
});
}
@Test
void shouldRegisterResourceHandlerMapping() {
this.contextRunner.run((context) -> {
@@ -843,6 +857,21 @@ class WebFluxAutoConfigurationTests {
}
@Configuration(proxyBeanMethods = false)
static class ResourceHandlerRegistrationCustomizers {
@Bean
ResourceHandlerRegistrationCustomizer firstResourceHandlerRegistrationCustomizer() {
return mock(ResourceHandlerRegistrationCustomizer.class);
}
@Bean
ResourceHandlerRegistrationCustomizer secondResourceHandlerRegistrationCustomizer() {
return mock(ResourceHandlerRegistrationCustomizer.class);
}
}
@Configuration(proxyBeanMethods = false)
static class ViewResolvers {