FeignClient接口的几种方式总结
@FeignClient这个注解,已经封装了远程调用协议。在springboot的开发,或者微服务的开发过程中,我们需要跨服务调用,或者调用外部的接口,我们都可以使用FeignClient。

一、@FeignClient介绍
@FeignClient 注解是 Spring Cloud 中的一个组件,它是基于 Netflix Feign 实现的。@FeignClient 注解可以帮助我们定义和实现服务之间的 RESTful 接口,使得服务之间的调用更加方便和可靠。@FeignClient 注解可以用于客户端的 API 接口定义,它可以将一个 HTTP API 接口转化为一个 Java 接口,从而使得我们可以像调用本地方法一样调用远程服务。
注解源码与解析
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface FeignClient {@AliasFor("name")String value() default "";String contextId() default "";@AliasFor("value")String name() default "";@DeprecatedString qualifier() default "";String[] qualifiers() default {};String url() default "";boolean decode404() default false;Class<?>[] configuration() default {};Class<?> fallback() default void.class;Class<?> fallbackFactory() default void.class;String path() default "";boolean primary() default true;}
1.1 value属性
具有可选协议前缀的服务的名称。名称的同义词。无论是否提供url,都必须为所有客户端指定名称。可以指定为属性键,例如:${propertyKey}。
1.2 contextId属性
这将被用作bean名称,而不是名称(如果存在),但不会用作服务id。
1.3 name属性
和value作用相同
1.4 qualifier属性
已弃用qualifier()。如果qualifier()和 qualifiers() 都存在,我们将使用后者,除非 qualifiers() 返回的数组为空或仅包含null或空白值,在这种情况下,我们将首先返回qualifier() ,如果也不存在,则返回默认值=contextId+“FeignClient”。
1.5 qualifiers属性
如上,已说明
1.6 url属性
绝对URL或可解析的主机名(协议是可选的)
1.7 decode404属性
404是否应该解码而不是抛出虚假异常
1.8 configuration属性
用于外部客户端的自定义配置类。可以包含组成客户端的部分的覆盖@Bean定义,例如feign.codec.Decoder, feign.codec.Encoder, feign.Contract.
1.9 fallback属性
指定的外部客户端接口的回退类。回退类必须实现由该注释注释的接口,并且是有效的spring bean。
1.10 fallbackFactory属性
为指定的外部客户端接口定义回退工厂。回退工厂必须生成回退类的实例,这些实例实现由FeignClient注释的接口。回退工厂必须是有效的spring bean。
1.11 path属性
所有方法级映射使用的路径前缀。
1.12 primary属性
是否将外部代理标记为主bean。默认为true。
二、常见的FeignClient接口的几种方式总结
@FeignClient(name = "myhuaweicloud", url = "https://xxx.com/")
public interface HuaweicloudClient {/*** 获取access-token接口*/@PostMapping("v1/xxx/enterprises/access-token")public Map<String,Object> getAccessToken(@RequestBody Map<String, Object> params);/*** 获取实况地址统一接口*/@PostMapping("/v2/xxx/devices/channels/media/live-connections")public Map<String, Object> liveConnections(@RequestHeader(name = "Access-Token",required = true) String Token,@RequestBody Map<String, Object> params);/*** 获取通道列表* @param map* @return*/@GetMapping("/v1/xxx/channels")public Map<String, Object> channels( @RequestHeader(name = "Access-Token",required = true) String Token,@RequestParam("device_id")String deviceId,@RequestParam("offset") Integer offset,@RequestParam("limit")Integer limit );/*** 获取设备列表* @param map* @return*/@GetMapping("/v1/xxx/devices")public Map<String, Object> devices( @RequestHeader(name = "Access-Token",required = true) String Token,@RequestParam("device_name") String deviceName,@RequestParam("offset") Integer offset,@RequestParam("limit")Integer limit);}
1、我们使用@FeignClient(name = "myhuaweicloud", url = "https:/xxx.com/")
对接口进行注解。
接口中封装的方法有同通过
@PostMapping
@GetMapping 进行注解。
这两种请求方式对应。使用@PostMapping 注解,表示接口需要通过post进行请求,使用@GetMapping表示接口需要通过get请求。
2、看一下常见的参数传递方式
@RequestBody Map<String, Object> params
以body的方式传递json参数。
@RequestHeader(name = "Access-Token",required = true) String Token
请求头中传递参数
@RequestParam("device_name") String deviceName
已键值的方式拼接参数和值进行传递
相关文章:
FeignClient接口的几种方式总结
FeignClient这个注解,已经封装了远程调用协议。在springboot的开发,或者微服务的开发过程中,我们需要跨服务调用,或者调用外部的接口,我们都可以使用FeignClient。 一、FeignClient介绍 FeignClient 注解是 Spring Cl…...
springBoot多数据源使用tdengine(3.0.7.1)+MySQL+mybatisPlus+druid连接池
一、安装部署 1、我这里使用的 3.0.7.1版本,因为我看3.x版本已经发布了一年了,增加了很多新的功能,而且3.x官方推荐,对于2.x的版本,官网都已经推荐进行升级到3.x,所以考虑到项目以后的发展,决定…...
剑指Offer 05.替换空格
剑指Offer 05.替换空格 目录 剑指Offer 05.替换空格05.替换空格题目代码(容易想到的)利用库函数的方法题解(时间复杂度更低)面试:为什么java中String类型是不可变的 05.替换空格 题目 官网题目地址 代码(…...
ChatGPT的功能与特点
随着人工智能技术的不断发展,ChatGPT作为OpenAI公司开发的基于GPT-3.5架构的大型语言模型,正引领着智能交互的新纪元。ChatGPT的功能与特点使其能够在多个领域展现出惊人的能力,本文将深入探讨ChatGPT的功能与特点,以及它在人工智…...
Vue2.0基础
1、概述 Vue(读音/vju/,类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层(也就是可以理解为HTMLCSSJS)ÿ…...
rust 如何定义[u8]数组?
在Rust中,有多种方式可以定义 [u8] 数组。以下是一些常见的方式: 使用数组字面量初始化数组: let array: [u8; 5] [1, 2, 3, 4, 5];使用 vec! 宏创建可变长度的数组: let mut vec: Vec<u8> vec![1, 2, 3, 4, 5];使用 v…...
关于Hive的使用技巧
前言 Hive是一个基于Hadoop的数据仓库基础架构,它提供了一种类SQL的查询语言,称为HiveQL,用于分析和处理大规模的结构化数据。 Hive的主要特点包括: 可扩展性:Hive可以处理大规模的数据,支持高性能的并行…...
【C++】BSTree 模拟笔记
文章目录 概念插入和删除非递归实现中的问题递归中的引用简化相关OJ复习直达 概念 由下面二叉搜索树的性质可以知道,中序遍历它便可以得到一个升序序列,查找效率高,小于往左找,大于往右走。最多查找高度次,走到到空&am…...
5分钟快手入门laravel邮件通知
第一步: 生成一个邮件发送对象 php artisan make:mail TestMail 第二步: 编辑.env 添加/修改(没有的key则添加) MAIL_DRIVERsmtp MAIL_HOSTsmtp.163.com (这里用163邮箱) MAIL_PORT25 (163邮箱…...
iOS——Block two
Block 的实质究竟是什么呢?类型?变量?还是什么黑科技? Blocks 是 带有局部变量的匿名函数 Blocks 由 OC 转 C 源码方法 在项目中添加 blocks.m 文件,并写好 block 的相关代码。打开「终端」,执行 cd XX…...
Ubuntu出现内部错误解决办法
使用的Ubuntu版本是18.04,使用的时候弹出对话框说出现了内部错误,好奇是哪里出现了错误,查找了一下解决的办法,记录一下。 参考解决方案:ubantu出现了内部错误 一旦程序崩溃过一次,就会生成一个.crash文件…...
2023年中职组“网络安全”赛项吉安市竞赛任务书
2023年中职组“网络安全”赛项 吉安市竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…...
ELK日志分析系统介绍及搭建(超详细)
目录 一、ELK日志分析系统简介 二、Elasticsearch介绍 2.1Elasticsearch概述 三、Logstash介绍 四、Kibana介绍 五、ELK工作原理 六、部署ELK日志分析系统 6.1ELK Elasticsearch 集群部署(在Node1、Node2节点上操作) 6.2部署 Elasticsearch 软件 …...
docker 资源限制
目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup(Control Group 控制组)实现容器对物理资…...
HCIP 交换综合实验--企业三层架构
题目 1、内网IP地址使用172.16.0.0/26分配 2、SW1和SW2之间互为备份 3、VRRP/STP/VLAN/Eth-trunk均使用 4、所有PC均通过DHCP获取IP地址 5、ISP只能配置IP地址 6、所有电脑可以正常访问ISP路由器环回 实验步骤 第一步、规划IP地址 R1-R2:100.1.1.0/24 R2-LSW1…...
微服务的基础使用
微服务 Maven的依赖冲突解决方案: 路径最短原则 配置优先原则 破坏规则则使用排除 SpringBoot场景启动器starter的开发流程 c3p0-spring-boot-starter自定义场景启动器 test-c3p0调用自定义场景启动器 SpringBoot自动装配 SpringBoot应用启动原理 nacos服务治…...
opencv-29 Otsu 处理(图像分割)
Otsu 处理 Otsu 处理是一种用于图像分割的方法,旨在自动找到一个阈值,将图像分成两个类别:前景和背景。这种方法最初由日本学者大津展之(Nobuyuki Otsu)在 1979 年提出 在 Otsu 处理中,我们通过最小化类别内…...
网络中通过IP地址查找位置
display ip routing-table 查看路由表 display vlan 查看vlan 信息 display stp brief 查看生成树信息 display mac-address 查看mac 地址表 display arp 查看arp表 SW1 SW2...
MyBatis的动态SQL语句
文章目录 前言LocalDate数据库代码po 包 ifwhere 标签 查trim 标签 增set 标签 改foreach 标签 删 前言 提示:这里可以添加本文要记录的大概内容: 查询条件是动态的 MyBatis的动态SQL语句是指在运行时根据不同条件选择不同的SQL语句执行。 这些条件可…...
交互式AI技术与模型部署:bert-base-chinese模型交互式问答界面设置
使用Gradio实现Question Answering交互式问答界面,首先你需要有一个已经训练好的Question Answering模型,这里你提到要使用bert-base-chinese模型。 Gradio支持PyTorch和TensorFlow模型,所以你需要将bert-base-chinese模型转换成PyTorch或Te…...
公共API宝典:开发者必备的开放数据资源大全
公共API宝典:开发者必备的开放数据资源大全 【免费下载链接】public-apis A collaborative list of public APIs for developers 项目地址: https://gitcode.com/GitHub_Trending/publ/public-apis 在当今数字化浪潮中,API已成为连接应用与服务的…...
如何高效利用Public APIs:开发者的完整API资源库指南
如何高效利用Public APIs:开发者的完整API资源库指南 【免费下载链接】public-apis A collaborative list of public APIs for developers 项目地址: https://gitcode.com/GitHub_Trending/publ/public-apis Public APIs项目是一个全面的公共API资源库&#…...
保姆级避坑指南:在Ubuntu 24.04虚拟机里用Docker搞定YOLOv11到MaixCam的模型转换
从零到一:Ubuntu 24.04虚拟机Docker实现YOLOv11模型到MaixCam的高效转换实战 边缘AI部署正成为智能硬件开发的热门方向,但对于刚接触Linux和Docker的开发者来说,从训练好的模型到实际设备部署往往充满挑战。本文将手把手带你完成YOLOv11模型从…...
对比评测:DeOldify与其他主流图像上色模型效果差异
对比评测:DeOldify与其他主流图像上色模型效果差异 老照片承载着记忆,但褪色的黑白影像总让人觉得少了点什么。最近几年,AI图像上色技术发展飞快,从早期的简单着色,到现在能生成色彩自然、细节丰富的彩色照片…...
告别双分支!用SCTNet在移动端实现高精度实时语义分割(附PyTorch推理代码)
SCTNet:移动端高精度实时语义分割的工程实践指南 在移动设备上部署实时语义分割模型一直是个棘手的平衡问题——要么牺牲精度换取速度,要么忍受延迟追求准确率。传统双分支架构如BiSeNet或RTFormer通过并行处理空间细节和语义上下文确实提升了性能&#…...
5步精通:免费AI图像视频超分辨率放大工具完全指南
5步精通:免费AI图像视频超分辨率放大工具完全指南 【免费下载链接】Waifu2x-Extension-GUI Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, Real-ESRGAN, Real-CUGAN, RTX Video Super Resolution…...
Pixel Aurora Engine行业应用:博物馆数字藏品像素化再创作授权管理方案
Pixel Aurora Engine行业应用:博物馆数字藏品像素化再创作授权管理方案 1. 项目背景与需求分析 博物馆数字藏品正面临一个关键挑战:如何在保持文物原貌的同时,吸引年轻观众的注意力。传统的高清数字化方案虽然能精确还原文物细节࿰…...
Unity URP项目里灯光一闪一闪?别慌,5分钟教你搞定Per Object Limit设置
Unity URP项目灯光闪烁终极解决方案:深入理解Per Object Limit机制 最近在Unity URP项目中调试灯光效果时,你是否遇到过这样的场景:精心布置的多个点光源在运行时却像夜店灯光一样闪烁不定?这可不是什么酷炫特效,而是…...
虚拟机基础:JVM、V8 运行机制极简科普
文章目录 前言一、先搞懂:到底什么是“虚拟机”?二、JVM:Java世界的“铁饭碗管家”2.1 JVM的整体工作流程2.2 JVM的核心结构:五大区域三大子系统2.2.1 运行时数据区(JVM的“房间布局”)2.2.2 三大核心子系统…...
毕业设计救星:用GD32F4和TinyEngine搞定你的AI模型部署(附完整Keil5工程)
毕业设计实战:用GD32F4和TinyEngine实现AI模型边缘部署 在毕业设计季,许多电子工程和计算机专业的学生都面临一个共同难题:如何在资源有限的嵌入式设备上实现AI模型部署。GD32F4系列MCU凭借其性价比优势成为热门选择,但传统部署流…...
