diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLocationResolver.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLocationResolver.java index 1ebf3edc..0a0621e9 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLocationResolver.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLocationResolver.java @@ -184,7 +184,8 @@ public class ConsulConfigDataLocationResolver implements ConfigDataLocationResol protected ConsulClient createConsulClient(BootstrapContext context) { ConsulProperties properties = context.get(ConsulProperties.class); - return ConsulAutoConfiguration.createConsulClient(properties); + return ConsulAutoConfiguration.createConsulClient(properties, + ConsulAutoConfiguration.createConsulRawClientBuilder()); } protected ConsulProperties loadProperties(ConfigDataLocationResolverContext resolverContext, diff --git a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulAutoConfiguration.java b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulAutoConfiguration.java index fa983841..3717cbc7 100644 --- a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulAutoConfiguration.java +++ b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulAutoConfiguration.java @@ -16,9 +16,12 @@ package org.springframework.cloud.consul; +import java.util.function.Supplier; + import com.ecwid.consul.transport.TLSConfig; import com.ecwid.consul.v1.ConsulClient; import com.ecwid.consul.v1.ConsulRawClient; +import com.ecwid.consul.v1.ConsulRawClient.Builder; import org.aspectj.lang.annotation.Aspect; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint; @@ -54,16 +57,28 @@ public class ConsulAutoConfiguration { @Bean @ConditionalOnMissingBean - public ConsulClient consulClient(ConsulProperties consulProperties) { - return createConsulClient(consulProperties); + public Supplier consulRawClientBuilderSupplier() { + return createConsulRawClientBuilder(); } - public static ConsulClient createConsulClient(ConsulProperties consulProperties) { + @Bean + @ConditionalOnMissingBean + public ConsulClient consulClient(ConsulProperties consulProperties, + Supplier consulRawClientBuilderSupplier) { + return createConsulClient(consulProperties, consulRawClientBuilderSupplier); + } + + public static Supplier createConsulRawClientBuilder() { + return Builder::builder; + } + + public static ConsulClient createConsulClient(ConsulProperties consulProperties, + Supplier consulRawClientBuilderSupplier) { + ConsulRawClient.Builder builder = consulRawClientBuilderSupplier.get(); final String agentPath = consulProperties.getPath(); final String agentHost = StringUtils.hasLength(consulProperties.getScheme()) ? consulProperties.getScheme() + "://" + consulProperties.getHost() : consulProperties.getHost(); - final ConsulRawClient.Builder builder = ConsulRawClient.Builder.builder().setHost(agentHost) - .setPort(consulProperties.getPort()); + builder.setHost(agentHost).setPort(consulProperties.getPort()); if (consulProperties.getTls() != null) { ConsulProperties.TLSConfig tls = consulProperties.getTls(); diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerBootstrapper.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerBootstrapper.java index 30a35d5d..e93717b6 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerBootstrapper.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerBootstrapper.java @@ -59,7 +59,8 @@ public class ConsulConfigServerBootstrapper implements BootstrapRegistryInitiali return null; } ConsulProperties consulProperties = context.get(ConsulProperties.class); - return ConsulAutoConfiguration.createConsulClient(consulProperties); + return ConsulAutoConfiguration.createConsulClient(consulProperties, + ConsulAutoConfiguration.createConsulRawClientBuilder()); }); registry.registerIfAbsent(ConsulDiscoveryClient.class, context -> { Binder binder = context.get(Binder.class);