@Override
    public Channel createChannel(final String name, final List<ClientInterceptor> interceptors,
            boolean sortInterceptors) {
        final URI address = this.properties.getChannel(name).getAddress();
        final String defaultScheme = this.properties.getDefaultScheme();
        if (address != null && IN_PROCESS_SCHEME.equals(address.getScheme())) {
            return this.inProcessChannelFactory.createChannel(address.getSchemeSpecificPart(), interceptors,
                    sortInterceptors);
        } else if (address == null && defaultScheme != null && defaultScheme.startsWith(IN_PROCESS_SCHEME)) {
            return this.inProcessChannelFactory.createChannel(name, interceptors, sortInterceptors);
        }
        return this.alternativeChannelFactory.createChannel(name, interceptors, sortInterceptors);
    }
Creates a new InProcessOrAlternativeChannelFactory with the given properties and channel factories.

@param properties The properties used to resolved the target scheme
@param inProcessChannelFactory The in process channel factory implementation to use.
@param alternativeChannelFactory The alternative channel factory implementation to use.
grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/channelfactory/InProcessOrAlternativeChannelFactory.java