@ConditionalOnMissingBean(ShadedNettyGrpcServerFactory.class)
    @Conditional(ConditionalOnInterprocessServer.class)
    @ConditionalOnClass(name = {"io.netty.channel.Channel", "io.grpc.netty.NettyServerBuilder"})
    @Bean
    public NettyGrpcServerFactory nettyGrpcServerFactory(
            final GrpcServerProperties properties,
            final GrpcServiceDiscoverer serviceDiscoverer,
            final List<GrpcServerConfigurer> serverConfigurers) {

        log.info("Detected grpc-netty: Creating NettyGrpcServerFactory");
        final NettyGrpcServerFactory factory = new NettyGrpcServerFactory(properties, serverConfigurers);
        for (final GrpcServiceDefinition service : serviceDiscoverer.findGrpcServices()) {
            factory.addService(service);
        }
        return factory;
    }
Creates a GrpcServerFactory using the non-shaded netty. This is the fallback, if the shaded one is not present.

@param properties The properties used to configure the server.
@param serviceDiscoverer The discoverer used to identify the services that should be served.
@param serverConfigurers The server configurers that contain additional configuration for the server.
@return The shadedNettyGrpcServerFactory bean.
grpc-server-spring-boot-starter/src/main/java/net/devh/boot/grpc/server/autoconfigure/GrpcServerFactoryAutoConfiguration.java