You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三种RestTemplate创建方式的差异及相关配置疑问

RestTemplate三种创建方式的区别及配置细节

一、三种创建方式的核心区别

  • 方式1:直接new RestTemplate()
    纯手动创建,Spring容器完全不参与配置,只遵循RestTemplate自身的默认构造逻辑初始化,仅包含基础的HttpMessageConverters和ClientHttpRequestFactory。
  • 方式2:注入自动配置的RestTemplateBuilder构建
    使用Spring Boot自动配置提供的RestTemplateBuilder实例,这个Builder已经被Spring预配置了一系列实用默认值:会根据类路径依赖自动选择合适的ClientHttpRequestFactory(比如有OkHttp依赖就用OkHttp3ClientHttpRequestFactory,否则用SimpleClientHttpRequestFactory),还支持通过spring.resttemplate.*配置文件自定义参数,同时会注册适配场景的HttpMessageConverters。
  • 方式3:new RestTemplateBuilder()构建
    手动创建的Builder没有Spring自动配置的加持,和直接new RestTemplate的逻辑差不多,只会用Builder自身的默认规则,不会加载配置文件的自定义设置,也不会自动适配类路径下的HTTP客户端依赖。

二、自动配置的RestTemplateBuilder添加的额外HttpMessageConverters

Spring Boot自动配置的RestTemplateBuilder会在RestTemplate默认转换器的基础上,根据类路径中的依赖自动添加以下常用转换器:

  • MappingJackson2HttpMessageConverter:类路径有Jackson依赖(spring-boot-starter-web默认包含)时,用于处理JSON格式的请求响应。
  • MappingJackson2XmlHttpMessageConverter:类路径有Jackson XML扩展依赖时,处理XML格式。
  • GsonHttpMessageConverter:类路径有Gson依赖时,作为JSON处理的备选方案。
  • StringHttpMessageConverter:默认就存在,但自动配置会强制将字符集设为UTF-8(RestTemplate原生默认可能不是)。
  • FormHttpMessageConverter:处理表单数据(application/x-www-form-urlencoded),自动配置会优化它的媒体类型支持范围。
  • 若存在JAXB依赖,还会添加Jaxb2RootElementHttpMessageConverter来处理XML。

三、方式1与方式2创建的RestTemplate配置差异

两者配置完全不同,核心差异如下:

  1. HttpMessageConverters:方式1只有RestTemplate自带的基础转换器,不会自动注册Jackson、Gson等适配依赖的转换器;方式2会根据类路径依赖自动添加上述额外转换器,还会配置合理的默认参数(比如UTF-8字符集)。
  2. ClientHttpRequestFactory:方式1默认使用SimpleClientHttpRequestFactory;方式2会自动检测类路径中的高性能HTTP客户端库(如OkHttp、Apache HttpClient),优先选用对应的Factory,没有的话才回退到SimpleClientHttpRequestFactory。
  3. 配置灵活性:方式2可以通过spring.resttemplate.*配置项自定义超时、连接池等参数,还能通过自定义RestTemplateCustomizer实现全局定制;方式1只能手动修改实例参数,没法利用Spring的配置机制。
  4. 错误处理:自动配置的Builder会默认配置更实用的ResponseErrorHandler,而方式1用的是原生默认的DefaultResponseErrorHandler,没有额外优化。

内容的提问来源于stack exchange,提问作者rnayabed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:28:27