@ConditionalOnMissingBean(GrpcChannelFactory.class)
    @ConditionalOnClass(name = {"io.netty.channel.Channel", "io.grpc.netty.NettyChannelBuilder"})
    @Bean
    @Lazy
    GrpcChannelFactory nettyGrpcChannelFactory(
            final GrpcChannelsProperties properties,
            final GlobalClientInterceptorRegistry globalClientInterceptorRegistry,
            final List<GrpcChannelConfigurer> channelConfigurers) {

        log.info("Detected grpc-netty: Creating NettyChannelFactory");
        return new NettyChannelFactory(properties, globalClientInterceptorRegistry, channelConfigurers);
    }
Creates a new NameResolverRegistration. This ensures that the NameResolverProvider's get unregistered when spring
shuts down. This is mostly required for tests/when running multiple application contexts within the same JVM.

@param nameResolverProviders The spring managed providers to manage.
@return The newly created NameResolverRegistration bean.
grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientAutoConfiguration.java