From 81eb97bca46797b72a0b02bb20a456e8693131f7 Mon Sep 17 00:00:00 2001 From: Fedor Bobin Date: Fri, 18 Mar 2022 11:19:39 +0300 Subject: [PATCH] Allow overriding registration client in blocking or reactive env (#2004) --- ...pringBootAdminClientAutoConfiguration.java | 4 +- ...gBootAdminClientAutoConfigurationTest.java | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/spring-boot-admin-client/src/main/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfiguration.java b/spring-boot-admin-client/src/main/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfiguration.java index 9bb65b77f27..36c0f9ddb7e 100644 --- a/spring-boot-admin-client/src/main/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfiguration.java +++ b/spring-boot-admin-client/src/main/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfiguration.java @@ -137,7 +137,7 @@ public static class BlockingRegistrationClientConfig { @Bean @ConditionalOnMissingBean - public BlockingRegistrationClient registrationClient(ClientProperties client) { + public RegistrationClient registrationClient(ClientProperties client) { RestTemplateBuilder builder = new RestTemplateBuilder().setConnectTimeout(client.getConnectTimeout()) .setReadTimeout(client.getReadTimeout()); if (client.getUsername() != null && client.getPassword() != null) { @@ -155,7 +155,7 @@ public static class ReactiveRegistrationClientConfig { @Bean @ConditionalOnMissingBean - public ReactiveRegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) { + public RegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) { if (client.getUsername() != null && client.getPassword() != null) { webClient = webClient.filter(basicAuthentication(client.getUsername(), client.getPassword())); } diff --git a/spring-boot-admin-client/src/test/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfigurationTest.java b/spring-boot-admin-client/src/test/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfigurationTest.java index 4d5948154d9..939a043b30a 100644 --- a/spring-boot-admin-client/src/test/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfigurationTest.java +++ b/spring-boot-admin-client/src/test/java/de/codecentric/boot/admin/client/config/SpringBootAdminClientAutoConfigurationTest.java @@ -23,11 +23,17 @@ import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration; import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; +import org.springframework.boot.context.annotation.UserConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; import de.codecentric.boot.admin.client.registration.ApplicationRegistrator; +import de.codecentric.boot.admin.client.registration.BlockingRegistrationClient; +import de.codecentric.boot.admin.client.registration.RegistrationClient; import static org.assertj.core.api.Assertions.assertThat; @@ -76,4 +82,44 @@ public void reactiveEnvironment() { .run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class)); } + @Test + public void customBlockingClientInReactiveEnvironment() { + ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner() + .withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class)).withConfiguration( + AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class, + WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class)); + reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081") + .run((context) -> { + assertThat(context).hasSingleBean(ApplicationRegistrator.class); + assertThat(context).getBean("registrationClient") + .isEqualTo(context.getBean(CustomBlockingConfiguration.class).registrationClient); + }); + } + + @Test + public void customBlockingClientInBlockingEnvironment() { + ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner() + .withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class)).withConfiguration( + AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class, + RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class)); + reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081") + .run((context) -> { + assertThat(context).hasSingleBean(ApplicationRegistrator.class); + assertThat(context).getBean("registrationClient") + .isEqualTo(context.getBean(CustomBlockingConfiguration.class).registrationClient); + }); + } + + @Configuration + public static class CustomBlockingConfiguration { + + RegistrationClient registrationClient = new BlockingRegistrationClient(new RestTemplate()); + + @Bean + public RegistrationClient registrationClient() { + return registrationClient; + } + + } + }