将单例服务客户端实例与 AWS SDK for Java 2.x - AWS SDK for Java 2.x

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将单例服务客户端实例与 AWS SDK for Java 2.x

中的服务客户端 AWS SDK for Java 2.x 是线程安全的。您可以为每个服务客户端创建一个实例,并在整个应用程序中重复使用该实例。这种方法可以提高性能并更有效地管理资源。

单一服务客户的好处

连接池

服务客户端维护内部 HTTP 连接池。创建和销毁这些池的成本很高。当您重复使用客户端时,这些池将在请求之间高效共享。

减少了初始化开销

创建客户端包括加载配置、建立凭据和初始化内部组件。单例实例消除了这种开销。

提高资源利用率

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

不要为每项操作创建新客户端:

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

重要注意事项

  • 服务客户端是线程安全的。您可以安全地跨多个线程共享它们。

  • 只有在应用程序关闭或不再需要客户端时才关闭客户端。 try-with-resources在应用程序级别使用client.close()或。

  • 如果您需要不同的配置,例如区域或证书,请为每个配置创建单独的单例实例。

如果您使用像 Spring 这样的依赖注入框架,请将服务客户端配置为单例 bean。这样可以确保适当的生命周期管理。