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

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.xdnf.cn/news/15263.html

相关文章:

  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • 十二、k8s工程化管理Helm
  • Linux自动化构建工具(一)
  • pdf拆分
  • 《打破预设的编码逻辑:Ruby元编程的动态方法艺术》
  • LVS负载均衡-DR模式配置
  • 进制转换原理与实现详解
  • 【unity编辑器开发与拓展EditorGUILayoyt和GUILayoyt】
  • RISC-V:开源芯浪潮下的技术突围与职业新赛道 (三)RISC-V架构深度解剖(下)
  • 【八股消消乐】浅尝Kafka性能优化
  • 【面板数据】省级泰尔指数及城乡收入差距测算(1990-2024年)
  • Vue集成MarkDown
  • 开源界迎来重磅核弹!月之暗面开源了自家最新模型 K2
  • UC浏览器PC版自2016年后未再更新不支持vue3
  • Git Submodule 介绍和使用指南
  • 服务器机柜与网络机柜各自的优势
  • 2025最新版Docker讲解/面试/命令/容器化技术
  • Marin说PCB之Allegro高亮BOM器件技巧详解
  • 【Linux】C++项目分层架构:核心三层与关键辅助
  • 报错 | “pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,
  • 基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统
  • SHA-256算法流程分析与演示——github工程完善
  • 基于k8s环境下pulsar高可用测试和扩缩容(上)
  • Flask 入门到实战(3):用 SQLAlchemy 优雅操作数据库
  • Linux 进程管理核心机制
  • 【mac】快捷键使用指南
  • 【AI大模型】RAG系统组件:向量数据库(ChromaDB)
  • 飞算 JavaAI 体验:重塑 Java 开发的智能新范式
  • LeetCode--43.字符串相乘
  • JVM故障处理与类加载全解析