为啥 Spring RestTemplate 在 Spring 中默认不是 Bean?
Posted
技术标签:
【中文标题】为啥 Spring RestTemplate 在 Spring 中默认不是 Bean?【英文标题】:Why Spring RestTemplate is not a Bean by default in Spring?为什么 Spring RestTemplate 在 Spring 中默认不是 Bean? 【发布时间】:2019-06-11 17:53:27 【问题描述】:在 Spring Boot 项目中使用 REST 调用时,由于我是个懒人,我的手很快就去键盘上为 Spring 的 RestTemplate 编写一个配置,如下所示:
@Bean
public RestTemplate restTemplate()
return new RestTemplate();
这是为了不每次都实例化它。 为什么我们不将它默认配置为 Bean?
【问题讨论】:
【参考方案1】:为什么我们不把它默认配置为一个 Bean?
尽管可能有点烦人,但 Spring Boot 团队有充分的理由默认不将 RestTemplate
声明为 @Bean
。参考documentation中有解释:
由于
RestTemplate
实例在使用前通常需要自定义,因此 Spring Boot 不提供任何单个自动配置的RestTemplate
bean。不过,它确实会自动配置一个
RestTemplateBuilder
,它可用于在需要时创建 RestTemplate 实例
对于新的WebClient
,Spring Boot 出于同样的原因只创建WebClient.Builder
(感谢Darren Forsythe 指出)
【讨论】:
以上是关于为啥 Spring RestTemplate 在 Spring 中默认不是 Bean?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在使用 RestTemplate 获取数据时总是得到 403? [复制]
为啥基本身份验证总是使用 restTemplate 给出错误 403?