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

SpringCloud之Feign

SpringCloud之Feign

.
推荐文档:https://www.springcloud.cc/spring-cloud-dalston.html#spring-cloud-feign


1. 什么是Feign

Feign是声明式HTTP客户端,专为微服务架构设计,用于简化服务间的远程调用,它让微服务之间的调用变得更简单,类似controller调用service。

Feign,主要是社区版,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法:

  • 微服务名字 【ribbon】
  • 接口和注解 【feign】

2. Feign能干什么?

Feign旨在使编写Java Http客户端变得更容易。
使用Ribbon + RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一个客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义,在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它 (类似以前Dao接口上标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解),即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon 时自动封装服务调用客户端的开发量。
Feign默认集成了Ribbon,利用Ribbon维护了MicroServiceCloud-Dept的服务列表信息,并且通过轮询实现了客户端的负载均衡,而与Ribbon不同的是,通过Feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用。


3. 声明式调用

通过定义接口 + @FeignClient 注解绑定远程服务,无需手动构造 HTTP 请求或解析响应。

代码示例:

@FeignClient(name = "user-service", fallback = UserFallback.class)
public interface UserServiceFeign {@GetMapping("/user/{id}")User getUser(@PathVariable("id") Long id);
}

4. 集成负载均衡与容错

  • 内置 Ribbon 实现客户端负载均衡(默认轮询策略)。

  • 支持 Hystrix/Sentinel 熔断降级(通过 fallback 指定降级逻辑)。


5. 与 Spring 生态无缝集成

  • 兼容 Spring MVC 注解(如 @RequestMapping、@PathVariable)。

  • 自动注册到服务发现组件(如 Eureka)。

http://www.dtcms.com/a/274671.html

相关文章:

  • 深入探讨大模型的记忆机制及其前沿技术
  • 数据结构与算法——从递归入手一维动态规划【2】
  • 极端高温下的智慧出行:危险检测与救援
  • AI介入电商内容生产,会颠覆品牌运营吗?
  • 打破内网壁垒,轻松实现安防视频的云端汇聚与P2P超低延迟播放
  • 史上最详细Java并发多线程(面试必备,一篇足矣)
  • 进制转换小题
  • 5 大人工智能知识管理工具
  • 冒泡排序和快速排序
  • 云成本优化完整指南:从理论到实践的全方位解决方案
  • 聚焦数据资源建设与应用,浙江省质科院赴景联文科技调研交流
  • Python 异常处理机制详解:try-except 捕获异常
  • 奇哥面试:RabbitMQ工作模式深度剖析与Spring整合MQ
  • C++ auto与 for循环
  • 2022 年 12 月青少年软编等考 C 语言七级真题解析
  • Linux驱动(input子系统)
  • 使用Python将目录中的JPG图片按后缀数字从小到大顺序纵向拼接,很适合老师发的零散图片拼接一个图片
  • 垂直和领域 Agent 的护城河:上下文工程
  • python16——匿名函数
  • 基于RUP的软件过程深度解析:架构师的高效工程框架
  • 73、【OS】【Nuttx】【启动】深入理解 caller-saved 和 callee-saved(上)
  • TypeScript---泛型
  • C语言初阶3-函数
  • 翱翔的智慧之翼:Deepoc具身智能如何赋能巡检无人机“读懂”工业现场
  • 电脑开机显示器不亮是怎么回事 这有解决方法
  • 数据治理到底是什么?搞清这四件事,你就彻底明白了!
  • python的病例管理系统
  • 非栈上格式化字符串漏洞(BSS段上)
  • openbmc pldmd分析(event事件分析)
  • 项目开发日记