在Spring Boot项目中使用REST调用时,作为一个懒惰的人,我的手很快转到键盘,为Spring的RestTemplate编写一个配置,如下所示:
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
这是为了避免每次都实例化它。 为什么我们默认不将其配置为Bean?
答案 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指出)