Extract consul client builder to distinct bean (#790)
* extract consul client builder to distinct bean rather than static instantiation to allow injection of custom clients * use supplier to allow new builder to be instantiated every call * rename variable * re-order imports to resolve checkstyle issues * fix compilation issues
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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<ConsulRawClient.Builder> consulRawClientBuilderSupplier() {
|
||||
return createConsulRawClientBuilder();
|
||||
}
|
||||
|
||||
public static ConsulClient createConsulClient(ConsulProperties consulProperties) {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ConsulClient consulClient(ConsulProperties consulProperties,
|
||||
Supplier<ConsulRawClient.Builder> consulRawClientBuilderSupplier) {
|
||||
return createConsulClient(consulProperties, consulRawClientBuilderSupplier);
|
||||
}
|
||||
|
||||
public static Supplier<Builder> createConsulRawClientBuilder() {
|
||||
return Builder::builder;
|
||||
}
|
||||
|
||||
public static ConsulClient createConsulClient(ConsulProperties consulProperties,
|
||||
Supplier<ConsulRawClient.Builder> 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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user