简单介绍一下什么是OpenFeign

devtools/2025/2/5 9:11:59/

OpenFeign是什么?

OpenFeign是一个声明式的Http客户端,它可以用来发起Http请求

它主要用于SpringCloud微服务之间的通讯,让调用另一个服务的Java方法和调用本地方法一样快速和便捷

之前我们是用RestTemplate写一大堆东西发起Http请求远程调用,现在我们微服务之间我们就用OpenFeign,方便又快捷


如何使用OpenFeign

引入openfeign依赖

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
</dependencies>

启动类添加注解开启OpenFeign

EnableFeignClients

编写Feign客户端

写客户端做我们的接口声明

FeignClinet注解

name,是我们的服务名称

url,是我们服务的URL路径

fallbackFactory: 指定了一个回退工厂类 UserClientFallBackFactory,用于在服务调用失败时提供备用逻辑

因为我们的两个服务的端口不同,所以我的feign发起请求的时候,我们要配置我们的url路径,里面写我们的另一个服务的端口,不然就无法成功调用


说一下OpenFeign的底层原理

OpenFeign 使用 Java 的动态代理技术来生成接口的实现类。当用户调用接口的方法时,OpenFeign 会拦截这个调用,读取方法的注解,获取请求的 URL、HTTP 方法、请求参数等信息,使用 RequestTemplate 类构建最终的 HTTP 请求

OpenFeign 支持多种配置选项,包括:

  • 超时设置
  • 重试机制
  • 日志记录

OpenFeign调用失败该怎么处理 

OpenFeign 支持多种配置选项,包括:

  • 超时设置
  • 重试机制
  • 日志记录
  • 自定义拦截器
  • FallBack

@FeignClient(name = "service-name", fallback = ServiceFallback.class)
public interface MyFeignClient {@GetMapping("/api/resource")Resource getResource();
}public class ServiceFallback implements MyFeignClient {@Overridepublic Resource getResource() {// 返回默认值或提示信息return new Resource("Default Value");}
}

OpenFeign是如何实现自动处理多个不同服务器上的服务的?

Feign可以和我们的注册中心Nacos结合起来工作

可以实现服务发现和负载均衡

@FeignClient(name = "your-service-name")
public interface YourFeignClient {@GetMapping("/api/resource")Resource getResource();
}


http://www.ppmy.cn/devtools/156229.html

相关文章

css中的animation

css的animation animation是一个综合属性,是animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, animation-play-state, and animation-timeline这些属性的简写 不过在…

Java项目: 基于SpringBoot+mybatis+maven+mysql实现的疾病防控综合管理系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmysql实现的疾病防控综合管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、…

Linux基础

一. Linux 主要目录 介绍&#xff1a;Linux 系统的文件系统遵循类似 UNIX 的目录结构&#xff0c;根目录 (/) 是最顶层的目录&#xff0c;下面包含了不同的子目录&#xff0c;承载着系统和应用程序的文件。 / (根目录) 这是整个文件系统的起点&#xff0c;所有其他目录和文件都…

Vue3 完整学习笔记 - 第五部分

Vue3 完整学习笔记 - 第五部分 5. Vue3 高级特性与性能优化 5.1 shallow 系列 API 重点掌握&#xff1a; shallowRef vs refshallowReactive vs reactive使用场景和性能影响 示例代码&#xff1a; <script setup> import { ref, shallowRef, reactive, shallowReac…

冯诺依曼系统及操作系统

目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一…

ip属地是根据所在位置定位的吗

在数字化时代&#xff0c;随着网络社交和电子商务的蓬勃发展&#xff0c;IP属地这一概念逐渐走入了大众的视野。许多平台开始显示用户的IP属地&#xff0c;这一举措旨在增强网络信息的透明度和真实性。然而&#xff0c;关于IP属地是否就是根据用户所在位置进行定位的问题&#…

接口测试通用测试用例

接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 现在很多系统前后端架构是分离的&#xff0c;从安全层面来说&#xff0c;只依赖前段进行限…

Ajax:重塑Web交互体验的人性化探索

在数字化时代&#xff0c;网页的交互性和响应速度已成为衡量用户体验的关键指标。Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;&#xff0c;作为前端与后端沟通的桥梁&#xff0c;凭借其异步通信的能力&#xff0c;极大地提升了网页的动态性和用户友好度&…