class EtcdAutoConfiguration {
    @Autowired
    private Environment environment;

    @Bean
    public EtcdOperation etcdOperation() {
        return new EtcdOperation();
    }

    @Bean
    @ConditionalOnMissingBean
    public Client client() {<FILL_FUNCTION_BODY>}
}

        String serverAddr = environment.getProperty(EtcdConstant.ETCD_SERVER_ADDR);
        if (StringUtils.isBlank(serverAddr)) {
            throw new DiscoveryException(EtcdConstant.ETCD_SERVER_ADDR + " can't be null or empty");
        }

        ClientBuilder clientBuilder = Client.builder().endpoints(serverAddr);

        String username = environment.getProperty(EtcdConstant.ETCD_USERNAME);
        if (StringUtils.isNotBlank(username)) {
            clientBuilder.user(ByteSequence.from(username, StandardCharsets.UTF_8));
        }

        String password = environment.getProperty(EtcdConstant.ETCD_PASSWORD);
        if (StringUtils.isNotBlank(password)) {
            clientBuilder.password(ByteSequence.from(password, StandardCharsets.UTF_8));
        }
        clientBuilder.loadBalancerPolicy(EtcdConstant.ETCD_CLIENT_ROUND_ROBIN);

        return clientBuilder.build();
    
<no_super_class>