首页 > 解决方案 > 将 RestTemplate 保存在内存中比在每个请求中创建新的 RestTemplate 更好吗?

问题描述

将 RestTemplate 保存在内存中比在每个请求中创建新的 RestTemplate 更好吗?

示例:对于我的 api 中的每个请求,我的 api 请求到另一个带有 REST 的 api。所以我的方法看起来像这样:

exampleMethod() {
   RestTemplate restTemplate = new RestTemplate;
   restTemplate.getForObject(...);
}

或者 :

private RestTemplate restTemplate;

exampleMethod() {
   if(restTemplate == null) {
      restTemplate = new RestTemplate;
   }
   restTemplate.getForObject(...)
}

标签: java

解决方案


RestTemplate被设计为线程安全和可重用的。

RestTemplate只是一个不执行实际网络操作的外观。它将网络操作委托给 HTTP 客户端实现。这种 HTTP 客户端实现的创建成本可能很高,并且通常会处理网络级别的优化,例如缓存每个源的连接。您通常希望重用这个 HTTP 客户端实现,这可以通过重用RestTemplate.

通常你会RestTemplate在 Spring 上下文中创建一个单例 bean。特别是在 Spring Boot 中,这很重要,您不应该使用new RestTemplate()语法,因为它不会注入所有已注册的定制器。


推荐阅读