【问题标题】:Can I use the same RestTemplate instance when consuming RESTful services from multiple servers从多个服务器使用 RESTful 服务时,我可以使用相同的 RestTemplate 实例吗
【发布时间】:2016-01-15 00:02:21
【问题描述】:

假设我的 RestClient 使用来自多个服务器的服务,每个服务器具有不同的主机名和凭据。

我了解RestTemplate is thread safe,并为每个任务创建不同的连接,但是如何使用不同的凭据来完成? 不是在创建时提供给 RestTemplate 的凭据吗?

【问题讨论】:

  • 它们在逻辑上是相同的服务吗?只是与不同的主机?还是不同的服务?
  • 两者。许多服务,可以划分为具有不同主机的相同服务的组。
  • 为什么要这样做。很难配置,很难理解,还得写一些新的类,...,你为什么不在每台服务器上不使用一个 RestTemplate?
  • @Ralph,你是对的。我想我会选择RestTemplateFactory,并为每台服务器保留一个RestTemplate

标签: spring rest spring-mvc resttemplate spring-rest


【解决方案1】:

您提到了凭据,因此我假设您使用RestTemplate 来调用需要身份验证的服务。身份验证通常通过 HTTP 请求标头(例如基本 HTTP 身份验证)或 URL 参数处理。

2 种可能性:

  • 您实例化一个普通的 RestTemplate 并手动处理身份验证(通过在您执行 GETPOST... 时添加标头或 URL 参数)=> 重复使用多个 RestTemplate 应该没有问题服务。
  • 您使用自定义 ClientHttpRequestFactory 或一些自定义 ClientHttpRequestInterceptor 来实例化 RestTemplate 来处理安全性 => 您可能无法共享它们,因为您可能会混合使用不同的身份验证。

【讨论】:

  • 谢谢。我看到 RestTemplate 出于某种原因被认为是一个“重”对象,所以我想创建尽可能少的对象,但是在每个 GET / POST 上手动验证并不有趣。我想我会为我使用的每台服务器保留一个RestTemplate
猜你喜欢
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2021-12-11
  • 2019-02-12
  • 2016-11-23
相关资源
最近更新 更多