java - 将 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(...)
}
解决方案
RestTemplate
被设计为线程安全和可重用的。
RestTemplate
只是一个不执行实际网络操作的外观。它将网络操作委托给 HTTP 客户端实现。这种 HTTP 客户端实现的创建成本可能很高,并且通常会处理网络级别的优化,例如缓存每个源的连接。您通常希望重用这个 HTTP 客户端实现,这可以通过重用RestTemplate
.
通常你会RestTemplate
在 Spring 上下文中创建一个单例 bean。特别是在 Spring Boot 中,这很重要,您不应该使用new RestTemplate()
语法,因为它不会注入所有已注册的定制器。
推荐阅读
- javascript - 动态添加/删除表单组并为每个输入提供唯一的 ID 和名称
- node.js - 在服务器中部署时将 API 请求路由到 MEAN 应用程序中的节点服务器
- vba - 如果数据源没有记录,则跳过 MS Word 邮件合并
- perl - 我应该使用哪种 OAuth2 授权类型?
- c# - 使控制台窗口脱离“选择模式”以防止崩溃
- html - 为什么我的浮动容器在我的 div 下而不是从新行开始
- javascript - 如何修复 Ajax 从数据库中获取任何内容?
- python - 脚本仅在脚本重新启动时才起作用?
- android - 更改 TabLayout 中的文本
- ios - 从 Pod 推送视图控制器