diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfiguration.java index b02aae7f49..c908cf3585 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfiguration.java @@ -98,6 +98,7 @@ public class RSocketServerAutoConfiguration { } @Bean + @ConditionalOnMissingBean public RSocketServerBootstrap rSocketServerBootstrap(RSocketServerFactory rSocketServerFactory, RSocketMessageHandler rSocketMessageHandler) { return new RSocketServerBootstrap(rSocketServerFactory, rSocketMessageHandler.serverAcceptor()); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfigurationTests.java index f3f0ebd25a..5ba0849f0a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfigurationTests.java @@ -32,6 +32,7 @@ import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; /** * Tests for {@link RSocketServerAutoConfiguration}. @@ -77,6 +78,12 @@ class RSocketServerAutoConfigurationTests { .hasSingleBean(RSocketServerBootstrap.class)); } + @Test + void shoudUseCustomServerBootstrap() { + contextRunner().withUserConfiguration(CustomServerBootstrapConfig.class).run((context) -> assertThat(context) + .getBeanNames(RSocketServerBootstrap.class).containsExactly("customServerBootstrap")); + } + private ApplicationContextRunner contextRunner() { return new ApplicationContextRunner().withUserConfiguration(BaseConfiguration.class) .withConfiguration(AutoConfigurations.of(RSocketServerAutoConfiguration.class)); @@ -100,4 +107,14 @@ class RSocketServerAutoConfigurationTests { } + @Configuration(proxyBeanMethods = false) + static class CustomServerBootstrapConfig { + + @Bean + public RSocketServerBootstrap customServerBootstrap() { + return mock(RSocketServerBootstrap.class); + } + + } + }