springcloud==openfeign

单独使用

创建一个服务端

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}@RestControllerclass UserController {@GetMapping("/users/{id}")public User getUser(@PathVariable String id) {// 模拟用户信息return new User(id, "User" + id);}}class User {private String id;private String name;// 构造函数、getters、setters}
}

创建一个客户端用openfeign去访问服务端

客户端的依赖

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-core</artifactId>
    <version>13.1.0</version>
</dependency>
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-gson</artifactId>
    <version>13.1.0</version>
</dependency>
 

import feign.Feign;
import feign.gson.GsonDecoder;
import feign.Param;
import feign.RequestLine;public class FeignDemo {interface UserClient {@RequestLine("GET /users/{id}")User getUserById(@Param("id") String id);}public static void main(String[] args) {UserClient userClient = Feign.builder().decoder(new GsonDecoder()).target(UserClient.class, "http://localhost:8080");User user = userClient.getUserById("123");System.out.println(user.getName());}static class User {private String id;private String name;// getters 和 setters}
}

其中openfeign的作用:

执行了几个关键步骤:动态代理: Feign 使用了动态代理设计模式来创建 UserClient 接口的代理实例。这是一种结构型设计模式,允许在运行时创建一个实现了一组接口的对象。构建请求模板: 对于接口中的每个方法,Feign 会构建一个请求模板,该模板包含了请求的方法、URL 和参数等信息。反射: Feign 通过 Java 反射机制来解析接口上的注解,这样它就能了解如何构建 HTTP 请求和处理响应。构建 HTTP 客户端: Feign 使用构建好的配置创建一个 HTTP 客户端,这个客户端用于发送请求。请求拦截器: 如果配置了请求拦截器,Feign 会在发送请求之前处理这些拦截器,这常用于添加身份验证信息等。装饰器模式: Feign 可以使用装饰器模式来包装 HTTP 客户端,添加额外的功能,如日志记录、重试机制等。

由于客户端是单纯用了openfeign,所以最终是建立一个HttpURLConnection,然后发出请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析函数防抖节流

防抖和节流都是前端开发中常用的优化性能的技术。 一、定义 防抖&#xff1a; 防抖指的是在事件触发后&#xff0c;在规定的时间内若再次触发&#xff0c;则重新计时&#xff0c;直到规定时间内没有再次触发事件&#xff0c;才执行事件处理。这样可以避免在短时间内频繁地触发…

Redis实战命令

实战命令 单值缓存 set key value get key 对象缓存 &#xff08;1&#xff09;set user:1 value(json格式) &#xff08;2&#xff09;mset user:1:name junfeng user:1:age 18 mget user:1:name user:1:age 分布式锁 分布式锁解决了什么问题&#xff1f; 分布式锁解…

2 线、3 线和 4 线 RTD 配置之间有什么区别?

电阻温度检测器 (RTD) 是温度传感器的一种&#xff0c;由于其准确性、可重复性和稳定性而广泛应用于各种工业应用。这些设备通过感测材料温度变化时电阻的变化来测量温度。 RTD 探头有多种配置&#xff0c;包括 2 线、3 线和 4 线型号。这些类型之间存在显着差异&#xff0c;在…

【干货】接口公共方法(字典表查询)

公共方法 import * as api from /api/commonAjax.js;//获取字典表 const getAjaxListCommonfunction(mm,backfun) {let ajaxFun""if(mm1){//字典表1ajaxFun"getAjax1"}else if(mm2){//字典表2ajaxFun"getAjax12"}api[ajaxFun]({}).then((res)&g…

唯创知音WT2003H系列MP3录音语音芯片:多样封装,录音时长可达70S,满足各种应用需求

在日益发展的电子产品市场中&#xff0c;音频芯片作为产品的重要组成部分&#xff0c;对于提升用户体验和产品质量具有不可忽视的作用。唯创知音的WT2003H系列MP3录音芯片便是其中的佼佼者&#xff0c;其录音时长最多可录70S&#xff08;采样率为8K&#xff09;&#xff0c;并且…

世岩清上:档案馆展厅设计的特色化

档案馆展厅设计的特色化不仅可以增强参观者的体验感&#xff0c;还可以更好地展现档案馆的历史文化价值。 在设计档案馆展厅时&#xff0c;我们可以通过以下几个方面来让其更具特色&#xff1a; 一、主题明确 首先&#xff0c;确定展厅的主题是关键。可以是档案馆的历史沿革…

git本地新建分支推送到其它分支

1&#xff0c;源码下完成bsp和项目环境配置 2&#xff0c;提交到gitlab master源码仓库 3&#xff0c;在本地仓库新建并切换分支 git branch rel_xxxgit checkout -b rel_xxx4&#xff0c;打包 5&#xff0c;新分支提交本地 6&#xff0c;git切换仓库到项目仓库 git remote ren…

Css解决浏览器缩放后,边框与图片之间有空白的问题

关键词 Css 前言 在项目开发的过程中&#xff0c;提高浏览器分辨率后&#xff0c;边框与图片之间会显示一点空白 原因 当缩放到175%时&#xff0c;应该1.75格代表1像素&#xff0c;但由于硬件层次限制&#xff0c;比如一格用四个物理像素点绘制&#xff0c;0.25格就不绘制&…

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.回溯搜索算法4.实验参数设定5.算法结果6.参考…

ubuntu改window任务栏

经常在ubuntu和win之间切换&#xff0c;任务栏的布局不统一会让人很别扭&#xff0c;个人很喜欢win任务栏的不折叠图标功能&#xff0c;而ubuntu没有&#xff0c;又很喜欢的ubuntu的多工作空间&#xff0c;效率比副屏还高&#xff0c;还可以自定义切换工作空间的快捷键。鱼和熊…

2023-11-28-直播单细胞图表美化-seurat数据结构 featureplot dotplot vlnplot

单细胞常见的可视化方式有DimPlot&#xff0c;FeaturePlot &#xff0c;DotPlot &#xff0c;VlnPlot 和 DoHeatmap几种 &#xff0c;Seurat中均可以很简单的实现&#xff0c;但是文献中的图大多会精美很多。 之前 跟SCI学umap图| ggplot2 绘制umap图&#xff0c;坐标位置 &am…

[SaaS] 广告创意中stable-diffusion的应用

深度对谈&#xff1a;广告创意领域中 AIGC 的应用这个领域非常快速发展&#xff0c;所以你应该保持好奇心&#xff0c;不断尝试新事物&#xff0c;不断挑战自己。https://mp.weixin.qq.com/s/ux9iEABNois3y4wwyaDzAQ我对AIGC领域应用调研&#xff0c;除了MaaS服务之外&#xff…

浅谈Elasticsearch安全和权限管理

Elasticsearch 安全和权限管理 Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎&#xff0c;它使得用户可以快速地存储、搜索和分析大量数据。在企业级应用中&#xff0c;保证数据的安全性和权限管理是至关重要的。本文将详细讲解 Elasticsearch 的安全和权限管理功能…

安全防控 | AIRIOT智能安防管理解决方案

现代社会对安全和便捷性的需求越来越高&#xff0c;特别是在大型商业园区、住宅社区和办公大楼等场所。传统的安防系统往往存在一些痛点: 通行效率问题&#xff1a;传统门禁系统通常导致人员排队等待&#xff0c;降低了通行效率。车辆通行管理不当会导致交通拥堵和停车问题。 …

Elasticsearch 线上实战问题及解决方案探讨

1、reindex相关问题 1.1 问题描述 我有 1tb 的一个大索引若干&#xff0c;要迁移到另外一个新集群去&#xff0c;有没有好办法&#xff1f;reindex好像会中断...... reindex 是不是就算设置了频率也会莫名的中断&#xff0c;而且没地方查到错误&#xff1f;1000多万的数据&…

【axios封装】万字长文,TypeScript实战,封装一个axios - 基础封装篇

目录 前言版本环境变量配置引入的类型1、AxiosIntance: axios实例类型2、InternalAxiosRequestConfig: 高版本下AxiosRequestConfig的拓展类型3、AxiosRequestConfig: 请求体配置参数类型4、AxiosError: 错误对象类型5、AxiosResponse: 完整原始响应体类型 目标效果开始封装骨架…

dialog打开时重新渲染

在 Vue 中打开 dialog 常用的方法是使用 el-dialog 控件。当 dialog 打开时&#xff0c;常常需要重新渲染对应的内容。这个功能可以通过监听 visible 属性实现。 具体实现方法如下&#xff1a; 在 el-dialog 控件上监听 visible 属性 <template><el-dialog :visibl…

鸿运主动安全监控云平台存在任意文件读取漏洞 附POC

@[toc] 鸿运主动安全监控云平台存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途…

蓝桥杯物联网竞赛_STM32L071_5_串口接收发送数据

理论&#xff1a; 串口采取异步通信&#xff0c;即不依赖时钟节拍来接收或发送数据&#xff0c;而是采用互相约定的波特率传输数据。 波特率与单位时间传输的比特数有关&#xff0c;波特率越大传输的数据越多 传输一个比特花费的时间T 1 / 比特率 接受和发送数据的时候需要…

leetcode 210.课程表 II

题目链接&#xff1a;leetcode 210 1.题目 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如&#xff0c;想要…