关于S3ClientClass2中amazonS3Client实例创建次数的疑问
你的判断是正确的
在你提供的代码场景下,amazonS3Client确实只会被创建一次,原因如下:
- 你用
lazy val声明了amazonS3Client,这是Scala的延迟初始化变量特性:它仅在第一次被访问时执行初始化逻辑(调用getS3Client()创建AmazonS3客户端实例),后续所有对它的调用都会直接复用已创建好的实例。 - 你在外部类中只实例化了一次
S3ClientClass2对象(val s3 = new S3ClientClass2()),之后每次请求调用readFromS3方法时,都是访问同一个S3ClientClass2对象里的amazonS3Client,所以整个流程中只会创建一次AmazonS3客户端。
额外说明:如果后续你创建多个S3ClientClass2实例,每个实例都会拥有独立的amazonS3Client实例,但在你当前的使用场景下,只会存在一个客户端实例。
内容的提问来源于stack exchange,提问作者sclee1
相关产品推荐
相关产品推荐

