为什么默认情况下,Spring RestTemplate在Spring中不是Bean?

时间:2019-01-17 13:56:27

标签: spring rest spring-boot resttemplate

在Spring Boot项目中使用REST调用时,作为一个懒惰的人,我的手很快转到键盘,为Spring的RestTemplate编写一个配置,如下所示:

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

这是为了避免每次都实例化它。 为什么我们默认不将其配置为Bean?

1 个答案:

答案 0 :(得分:9)

  

为什么我们默认不将其配置为Bean?

即使可能有点令人讨厌,Spring Boot Team还是有充分的理由不默认将jaki@jaki-notebook:~$ python3 -V Python 3.6.7 jaki@jaki-notebook:~$ python3 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from winreg import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'winreg' >>> 声明为RestTemplate。在参考文献documentation中对此进行了解释:

  

由于@Bean实例在使用前通常需要自定义,因此Spring Boot不提供任何单个自动配置的RestTemplate bean。

     

但是,它会自动配置RestTemplate,可在需要时用于创建RestTemplate实例


对于新的RestTemplateBuilder,出于相同的原因,Spring Boot仅创建WebClient(感谢Darren Forsythe指出)