当前位置: 首页 > news >正文

面试题:SpringBoot调用http服务几种方式

面试官:SpringBoot提供了哪些调用Http服务的方式呢?

我们来盘一盘Spring提供的调用Http服务的方式:

方式一:RestTemplate

RestTemplate默认的底层实现是JDK的HttpURLConnection。当然如果要支持负载均衡可以加上@Loadbalancer注解来实现,这样可以集成到注册中心通过服务名称来调用eureka或nacos上的服务。

方式二:Feign

Feign默认底层实现也是JDK的HttpURLConnection(当然可以换httpclient、okhttp),Feign默认就集成了Ribbon做负载,由于Ribbon的停更,新近的SpringBoot版本已经支掉Ribbon了换成spring自己的Loadbalancer。

方式三:WebClient

spring5后spring就建议使用响应式的WebClient作为Http的请求,WebClient也可以+@Loadbalancer来实现负载均衡。WebClient是响应式的

方式四:HttpInterfaces

SpringBoot3.x增加了@HttpInterfaces注解,它底层默认实现是WebClient当然为了支持负载也S可以自己加一下@Loadbalancer注解。

那问题来了,他们都能实现相同的功能,怎么选择呢?

  • RestTemplate 使用 Java Servlet API,是同步、阻塞的方法。
  • WebClient 是异步、非阻塞的,在等待响应返回时不会阻塞正在执行的线程。只有当响应就绪时,才会产生通知。相对阻塞的RestTemplate非阻塞的WebClient有一定优势,这也是后面spring官方也在推荐使用的。

感觉还是得看自己项目的需要,如果项目已经有了也能用,就不用去改变了;如果项目上有性能或者响应式的需要,可以考虑换一换,或者新项目尝试用一下新的;如果追求性能到是可以做个测试比较一下,感觉webclient会好点。@HttpInterfaces生态还没起来很多相应的中间件也还没起来,不过WebClient到是可以尝试下。个人感觉一个项目还是会存在以上几种的共存的状态。

不过有这疑问就是spring里有了RestTemplate 、WebClient、Feign这么多http客户端工具为什么还要出一个HttpInterfaces直接让Feign也集成WebClient不就可以了吗?希望知道答案的朋友分享下。

 

相关文章:

  • yolov7配置与训练记录(二)
  • Spring Cloud(十五):微服务自动化部署 DevOps CI/CD、Maven打包、ELK日志采集
  • [设计] Doris血缘解析流程
  • 【校招VIP】[推电影项目]商业项目的竞品分析和需求分析
  • 语法练习:array123
  • 设计模式之原型模式
  • JVM之垃圾收集器三
  • 【web前端期末大作业】基于html关爱空巢老人网页设计与实现
  • flutter课程(The Complete 2021 Flutter Development Bootcamp with Dart)学习总结
  • 架构师知识体系梳理
  • LaTex使用技巧9:argmin / argmax下标写法
  • MySQL表的操作
  • 给定一个已排序的数组,使用就地算法将重复的数字移除,使数组中的每个元素只出现一次,返回新数组的长度
  • Vue2基础篇-01-Vue2 入门概述
  • CleanMyMac2023一键清除垃圾缓存和恶意广告插件 时刻保持Mac畅快运行
  • 通信原理 | 彻底搞懂卷积
  • 微服务框架 SpringCloud微服务架构 20 RestClient 操作索引库 20.5 删除和判断索引库
  • Vue3知识点之数据侦测
  • 【Python恶搞】Python实现祝福单身狗的恶搞项目,快@你的好朋友,祝福他吧 | 附源码
  • 共享车位|基于SpringBoot+vue+node共享车位平台的设计与实现
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉