diff --git a/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java b/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java index 11df931..ac73953 100644 --- a/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java +++ b/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java @@ -16,6 +16,7 @@ package org.springframework.grpc.client; import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -29,11 +30,23 @@ import io.grpc.ManagedChannelBuilder; public class DefaultGrpcChannelFactory implements GrpcChannelFactory, DisposableBean { - private Map channels = new ConcurrentHashMap<>(); + private final Map channels = new ConcurrentHashMap<>(); + + private final List configurers = new ArrayList<>(); + + public DefaultGrpcChannelFactory() { + } + + public DefaultGrpcChannelFactory(List configurers) { + configurers.addAll(configurers); + } @Override public ManagedChannelBuilder createChannel(String authority) { ManagedChannelBuilder target = Grpc.newChannelBuilder(authority, InsecureChannelCredentials.create()); + for (GrpcChannelConfigurer configurer : configurers) { + configurer.accept(target); + } return new DisposableChannelBuilder(authority, target); } diff --git a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientAutoConfiguration.java b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientAutoConfiguration.java index d4e3185..6bd37fa 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientAutoConfiguration.java +++ b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientAutoConfiguration.java @@ -15,10 +15,13 @@ */ package org.springframework.grpc.autoconfigure.client; +import java.util.List; + import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.grpc.client.DefaultGrpcChannelFactory; +import org.springframework.grpc.client.GrpcChannelConfigurer; import org.springframework.grpc.client.GrpcChannelFactory; @Configuration(proxyBeanMethods = false) @@ -26,8 +29,8 @@ public class GrpcClientAutoConfiguration { @Bean @ConditionalOnMissingBean(GrpcChannelFactory.class) - public DefaultGrpcChannelFactory defaultGrpcChannelFactory() { - return new DefaultGrpcChannelFactory(); + public DefaultGrpcChannelFactory defaultGrpcChannelFactory(final List configurers) { + return new DefaultGrpcChannelFactory(configurers); } }