每次创建一个新的 RestTemplate 和创建一个返回相同 Rest 模板的单个类之间的权衡

Posted

技术标签:

【中文标题】每次创建一个新的 RestTemplate 和创建一个返回相同 Rest 模板的单个类之间的权衡【英文标题】:TradeOff between creating a new RestTemplate each Time and Creating a Single Class returning same Rest Template 【发布时间】:2016-09-27 19:15:39 【问题描述】:

在 Spring Boot 中,用于进行 Rest Client 调用,当前在多个类中使用 new 关键字创建 RestTemplate。

RestTemplate restTemplate = new RestTemplate(); 
ResponseEntity<String> response = restTemplate.exchange(

计划创建一个返回相同 RestTemplate 实例的单个类,并将其用于所有 Rest 调用。

会不会影响性能。性能或其他方面的缺点可能是什么?

除了创建单个 RestTemplate 之外,使用 Pooling 是更好的选择吗? 谢谢

【问题讨论】:

为什么不使用 Spring 依赖注入?通过调度程序 servlet 注入其余模板并在需要时自动装配它。 使用 Spring Boot。计划在需要的地方自动装配 RestTemplate 类。问题是否会在整个过程中使用单个 RestTemplate 影响性能或任何其他缺点? 不,它不会也可能会提高性能,因为您没有一遍又一遍地构造相同对象的开销。 感谢 Deinum。另外,创建 RestTemplate 池而不是使用单个 RestTemplate 是个好主意? 使用单个实例。不要创建另一个对象,只需在配置文件中使用 @Bean 注册它,然后正常注入。 【参考方案1】:

每次需要使用时创建一个新的 RestTemplate 会比只创建一次并使用依赖注入来获取对它的引用更昂贵。

创建连接池将提供额外的性能提升,因为它允许重新使用连接(如果这是您需要的话)

【讨论】:

以上是关于每次创建一个新的 RestTemplate 和创建一个返回相同 Rest 模板的单个类之间的权衡的主要内容,如果未能解决你的问题,请参考以下文章

每次在统一 3D 中启用脚本时创建一个新的 CSV 文件

每次单击同一个按钮时如何创建一个新的textView?

在 WebAPI 客户端中每次调用创建一个新的 HttpClient 的开销是多少?

每次程序运行时创建一个新的但不同的对象

每次单击按钮时如何创建一个新的div?

python如何在循环中,每次循环都创建一个新的类?