首页 > 解决方案 > 调用 API 时不想重复生成对象

问题描述

在Spring中,有一个对象,我在调用这个API的时候需要创建它,但是这个对象的参数每次都不一样。这不是个好主意吗?我该如何改进它?用setter重置参数?</p>

标签: springapiobject

解决方案


根据您的描述,我相信您可能面临过早优化的风险,那就是您花费大量时间担心无关紧要的事情。更糟糕的是,针对内存或 CPU 进行优化通常会降低可读性,这会使 bug 更容易引入。因此,只有当您有明显的问题并且分析器表明该区域是问题的根源(适当的内存或 CPU 分析器)时,您才应该对内存或 cpu 进行优化

以您的示例为例,您担心每个请求都会生成一个 List(大概是一个 Arraylist?)。这些本身就是小型数据结构(可能占总内存使用量的一小部分),它们只有在包含大量其他大型对象时才会变大,更糟糕的是,您建议重置列表并在 api 请求之间重用它。这种对列表的重用和重置会引入一个只会间歇性发生的微妙错误(最糟糕的错误);如果两个 API 请求重叠(很可能是 Web 服务器),那么它们将同时使用该列表;来自请求 A 的状态可能会泄漏到 B 中,反之亦然。这几乎是一个完美的例子,说明了为什么你不应该过早地进行优化。

(如果列表包含从未改变的静态数据,那么我的答案可能会有所不同)


推荐阅读