若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)

server/2025/1/8 18:50:17/

若依中Feign调用具体使用

   注意:以下所有步骤实现的前提是需要在启动类上加入注解 @EnableRyFeignClients 主要是为开启feign接口扫描   

1.创建服务提供者(provider)

导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的@EnableRyFeignClients注解,此步可省略):

image-20250103195106053

service层代码如下(示例):

    在服务提供者中调用servic层获取数据//创建服务提供者
@RestController
@RequestMapping("/provider")
public class ProviderController {@Autowiredprivate UserService userService;@RequestMapping("/getUserById/{id}")public User getUserById(@PathVariable Integer id){return userService.getUserById(id);}
}

2.创建feign接口

代码如下(示例):

    解释都放在了代码中,可以直接复制粘贴/*** @FeignClient 一般采用服务名进行命名* url: url一般用于调试,可以手动指定@FeignClient调用的地址** @RequestMapping 主要用于feign框架拼接传递url,弥补了Ribbon的url需要手动拼接的缺陷* @PathVariable("id") 当路径为restful风格时路径传参方式* @RequestParam("id") 当路径为?id=250 时传参方式* @RequestBody User user 当路径为对象时采用的传参方式,(集合、数组等都属于对象)*/
@FeignClient("feign-provider")
@RequestMapping("/provider")
public interface UserFeign {@RequestMapping("/getUserById/{id}")User getUserById(@PathVariable("id") Integer id);@RequestMapping("/deleteUserById")User deleteUserById(@RequestParam("id") Integer id);//?形式拼接参数,?id=250@RequestMapping("/addUser")User addUser(@RequestBody User user);//pojo--->json
}

3.创建服务消费者(consumer)

//服务消费者
@RestController
@RequestMapping("/consumer")
public class ConsumerController {@Autowiredprivate UserFeign userFeign;@RequestMapping("/getUserById/{id}")public User getUserById(@PathVariable Integer id){return userFeign.getUserById(id);}
}

eger id){
return userFeign.getUserById(id);
}
}
这样,当消费者调用userFeign的getUserById(id)方法时,会向当前项目路径下的/provider/getUserById/{id}发送请求.


http://www.ppmy.cn/server/156854.html

相关文章

【微服务】5、服务保护 Sentinel

Sentinel学习内容概述 Sentinel简介与结构 Sentinel是Spring Cloud Alibaba的组件,由阿里巴巴开源,用于服务流量控制和保护。其内部核心库(客户端)包含限流、熔断等功能,微服务引入该库后只需配置规则。规则配置方式有…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户(重要) 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

c++程序设计(第3版)系列教程

c程序设计(第3版)系列笔记 预备知识 在c当中,避免字符串被截断的输入为gets(S),但是由于c语言新标准的推行和部分删除,在使用gets(S)时只能通过宏定义#define gets(S) fgets(S,sizeof(S),stdin)处理之后使用。 在c当中,面对难以处…

k8s技术架构

Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它通过提供一组强大的工具和API,使得在分布式环境中管理容器变得高效和可靠。以下是Kubernetes的技术架构的主要组成部分: ### 1. **集群架构** Kubernetes集群是Kubernetes的核…

PyQt5 UI混合开发,控件的提升

PromoteLabelTest.py 提升的类import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent = None):super().__init__(parent)self.setText("…

Spring 中注入 Bean 的方式推荐

在 Spring 中,注入 Bean 的方式有多种,每种方式适用于不同的场景。一般来说,可以选择以下几种注入方式:构造器注入、setter 注入、字段注入(即使用 Autowired)以及基于注解的注入(如 Qualifier&…

KBQA前沿技术

文章目录 KBQA面临的挑战基于模板的方法基于语义解析的方法基于深度学习的传统问答基于深度学习的端到端问答模型KBQA面临的挑战 目前还存在两个很大的困难阻碍着KBQA系统被广泛应用。一个困难是现有的自然语言理解技术在处理自然语言的歧义性和复杂性方面还显得比较薄弱。例如…

137. 只出现一次的数字 II

137. 只出现一次的数字 II 题目-中等难度1. 位运算2. 位运算 题目-中等难度 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数…