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.hqwc.cn/news/227697.html

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

相关文章

小功能实现(十九)生成shp文件

引入依赖 <!--shp文件相关工具--><dependency><groupId>org.geotools</groupId><artifactId>gt-shapefile</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geo…

C语言进阶指南(12)(数组指针与二维数组)

欢迎来到博主的专栏——C语言进阶指南 博主的id&#xff1a;reverie_ly 数组指针 数组指针的标准声明如下 type &#xff08;*parr&#xff09;[num] type是指针指向的数组的类型&#xff0c;[num]是指针指向的数组的元素大小。 顾名思义&#xff0c;数组指针就是用来指向数组…

Python的换行和转义:深入理解代码排版与字符串处理

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python的换行和转义&#xff1a;深入理解代码排版与字符串处理&#xff0c;全文2700字&#xff0c;阅读大约8分钟。 在Python编程中&#xff0c;正确使用换行和转义字符是保…

MySQL- CRUD

一、INSERT 添加 公式 INSERT INTO table_name [(column [, column...])] VALUES (value [, value...]); 示例&#xff1a; CREATE TABLE goods (id INT ,good_name VARCHAR(10),price DOUBLE ); #添加数据 INSERT INTO goods (id,good_name,price ) VALUES (20,华为手机,…

【带头学C++】----- 八、C++面向对象编程 ---- 8.5 struct结构体类型增强使用说明

目录 8.5 struct结构体类型增强使用说明 8.5.1 C结构体可以定义成员函数 8.5.2 c中定义结构体变量可以不加struct关键字 8.6 bool布尔类型关键字 8.5 struct结构体类型增强使用说明 第六章对结构体的使用、内存对齐以及数组、深拷贝和浅拷贝进行了一个详细的说明&#xff0c…

Redis队列stream,Redis多线程详解

Redis 目前最新版本为 Redis-6.2.6 &#xff0c;会以 CentOS7 下 Redis-6.2.4 版本进行讲解。 下载地址&#xff1a; https://redis.io/download 安装运行 Redis 很简单&#xff0c;在 Linux 下执行上面的 4 条命令即可 &#xff0c;同时前面的 课程已经有完整的视…

方差分析汇总

一文整理了方差分析的全部内容&#xff0c;包括方差分析的定义&#xff08;基本思想、检验统计量的计算、前提条件&#xff09;、方差分析分类&#xff08;单因素、双因素、多因素、事后多重比较、协方差分析、重复测量方差分析&#xff09;、方差分析流程&#xff08;数据格式…

HTTP/3 为什么正迅速崛起

超文本传输协议&#xff08;HTTP&#xff09;作为互联网的基石&#xff0c;一直在网页加载、视频流传输、应用获取数据等方方面面发挥重要作用。 去年&#xff0c;负责定义互联网技术的互联网工程任务组&#xff08;IETF&#xff09;将该协议的最新版本 HTTP/3 定为标准。在此…

大模型训练为什么用A100不用4090

这是一个好问题。先说结论&#xff0c;大模型的训练用 4090 是不行的&#xff0c;但推理&#xff08;inference/serving&#xff09;用 4090 不仅可行&#xff0c;在性价比上还能比 H100 稍高。4090 如果极致优化&#xff0c;性价比甚至可以达到 H100 的 2 倍。 事实上&#x…

如何控制Spring工厂创建对象的次数?详解Spring对象的声明周期!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

SPSS生存分析:寿命表分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

15.spring源码解析-invokeBeanFactoryPostProcessors

BeanFactoryPostProcessor接口允许我们在bean正是初始化之前改变其值。此接口只有一个方法: void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory);有两种方式可以向Spring添加此对象: 通过代码的方式: context.addBeanFactoryPostProcessor 通过xml…