

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# でシングルトンサービスクライアントインスタンスを使用する AWS SDK for Java 2.x
<a name="singleton-service-clients"></a>

のサービスクライアント AWS SDK for Java 2.x はスレッドセーフです。各サービスクライアントのインスタンスを 1 つ作成し、アプリケーション全体で再利用できます。このアプローチにより、パフォーマンスが向上し、リソースをより効率的に管理できます。

## シングルトンサービスクライアントの利点
<a name="singleton-performance-benefits"></a>

接続プーリング  
サービスクライアントは内部 HTTP 接続プールを維持します。これらのプールの作成と破棄にはコストがかかります。クライアントを再利用すると、これらのプールはリクエスト間で効率的に共有されます。

初期化オーバーヘッドの削減  
クライアントの作成には、設定のロード、認証情報の確立、内部コンポーネントの初期化が必要です。シングルトンインスタンスは、このオーバーヘッドを排除できます。

リソース使用率の改善  
シングルトンクライアントは、多数のクライアントインスタンスを作成するときに発生する可能性のあるリソースの枯渇を防ぎます。

## シングルトンサービスクライアントを作成して使用する
<a name="singleton-best-practice-example"></a>

次の例は、 シングルトンサービスクライアントを作成して使用する方法を示しています。

```
// 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;
    }
}
```

オペレーションごとに新しいクライアントを作成しない方法

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

## 重要な考慮事項
<a name="singleton-important-considerations"></a>
+ サービスクライアントはスレッドセーフです。複数のスレッド間で安全に共有できます。
+ アプリケーションがシャットダウンしたとき、またはクライアントが不要になったときにのみクライアントを終了します。アプリケーションレベルで `client.close()` または try-with-resources を使用します。
+ リージョンや認証情報など、異なる設定が必要な場合は、設定ごとに個別のシングルトンインスタンスを作成します。

Spring などの依存関係インジェクションフレームワークを使用する場合は、サービスクライアントをシングルトンの Bean として設定します。これにより、適切なライフサイクル管理が可能になります。