将单例服务客户端实例与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 连接池。创建和销毁这些池的成本很高。当您重复使用客户端时,可以在不同请求之间高效共享这些池。

降低了初始化开销

创建客户端涉及加载配置、建立凭证和初始化内部组件。使用单例实例可消除这种开销。

更高效地利用资源

使用单例客户端可防止因为创建许多客户端实例而耗尽资源。

创建和使用单例服务客户端

以下示例说明了如何创建和使用单例服务客户端:

// 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(); } }

重要注意事项

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

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

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

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