

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use instâncias de cliente de serviço singleton com o AWS SDK for Java 2.x
<a name="singleton-service-clients"></a>

Os clientes de serviço no AWS SDK for Java 2.x são seguros. Você pode criar uma instância de cada cliente de serviço e reutilizá-la em toda a aplicação. Essa abordagem melhora o desempenho e gerencia os recursos com mais eficiência.

## Benefícios dos clientes de serviços singleton
<a name="singleton-performance-benefits"></a>

Agrupamento de conexões  
Os clientes de serviço mantêm pools de conexões HTTP internos. Criar e destruir esses grupos é caro. Quando você reutiliza clientes, esses grupos são compartilhados de forma eficiente entre as solicitações.

Redução da sobrecarga de inicialização  
A criação de um cliente envolve carregar a configuração, estabelecer credenciais e inicializar componentes internos. As instâncias singleton eliminam essa sobrecarga.

Utilização melhor de recursos  
Clientes singleton evitam a exaustão de recursos que pode ocorrer quando você cria várias instâncias de clientes.

## Criar e usar clientes de serviço singleton
<a name="singleton-best-practice-example"></a>

O exemplo a seguir mostra como criar e usar clientes de serviço singleton:

```
// Create one instance and use it throughout the application.
public class ServiceClientSource {
    private static final S3Client s3Client = S3Client.create();
    
    public static S3Client getS3Client() {
        return s3Client;
    }
}
```

Não crie mais clientes para cada operação:

```
// This approach creates unnecessary overhead.
public void badExample() {
    try (S3Client s3 = S3Client.create()) {
        s3.listBuckets();
    }
}
```

## Considerações importantes
<a name="singleton-important-considerations"></a>
+ Clientes de serviço têm segurança de thread. Você pode compartilhá-los com segurança em várias threads.
+ Feche clientes somente quando a aplicação for encerrada ou se você não precisar mais do cliente. Use `client.close()` ou try-with-resources no nível do aplicativo.
+ Se você precisar de configurações diferentes, como regiões ou credenciais, crie instâncias singleton separadas para cada configuração.

Se você usa estruturas de injeção de dependência como o Spring, configure os clientes de serviço como beans únicos. Isso garante o gerenciamento adequado do ciclo de vida.