【问题标题】:Where to create RestTemplate in Spring? [duplicate]Spring 在哪里创建 RestTemplate? [复制]
【发布时间】:2017-06-26 10:21:31
【问题描述】:

Spring 中创建RestTemplate 实例的正确方法是什么?

假设我有一个服务,我通过 rest 模板执行多线程请求。

我在不同的教程中发现了各种变体:

1) 在需要时创建它:

RestTemplate restTemplate = new RestTemplate();

2) 将其声明为 bean:

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

(或相同的方式 - 在 XML 配置文件中)。

然后自动装配它...在这种情况下它总是线程安全的吗?

有任何性能差异吗?什么更“春天”的风格?

【问题讨论】:

  • 好的,它总是线程安全的吗?
  • 如果根据需要创建,那么每次都需要配置。它应该是一个单例 bean,是的,它是线程安全的。
  • 我投票决定重新打开,因为给定的链接只回答一个问题(我想这不是主要问题)
  • 没有spring style这样的东西。无论您是声明一个 bean 还是自己初始化一个对象,都与RestTemplate 无关。这是你需要做出的选择。线程安全暗示了性能。如果对象是线程安全的,那么继续初始化新实例是没有意义的。仅当您需要为每个配置进行自定义配置时才有意义,但我们无法回答,因为这不是您问题的一部分。

标签: java spring rest spring-mvc


【解决方案1】:

Spring 在哪里创建 RestTemplate?

它可以在任何负责 Web 客户端设置的配置类中定义(如果有)。通过假设这是一个相当重的对象,可以将其声明为具有单例范围(每个容器一个实例)的 @Bean

如果您在 Spring Boot 应用程序中,我建议使用 RestTemplateBuilder,这有助于更方便地构造 RestTemplate

还有什么比较“春天”的风格?

“Spring 风格”不是手动解决依赖,而是写成行之类的

RestTemplate restTemplate = new RestTemplate();

把这件事交给框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2014-01-13
    • 2019-03-30
    相关资源
    最近更新 更多