当前位置: 首页 > news >正文

30基于Feign远程调用

2.1.Feign替代RestTemplate

Fegin的使用步骤如下:

1)引入依赖

我们在order-service服务的pom文件中引入feign的依赖:

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

2)添加注解

在order-service的启动类添加注解开启Feign的功能:

@EnableFeignClients

3)编写Feign的客户端

在order-service中新建一个接口,内容如下:

@FeignClient("userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}

这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:

  • 服务名称:userservice
  • 请求方式:GET
  • 请求路径:/user/{id}
  • 请求参数:Long id
  • 返回值类型:User

这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。

4)测试

修改order-service中的OrderService类中的queryOrderById方法,使用Feign客户端代替RestTemplate:

    @Autowiredprivate UserClient userClient;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);//2.用Feign远程调用User user = userClient.findByID(order.getUserId());//3.封装user到orderorder.setUser(user);// 4.返回return order;}

是不是看起来优雅多了。

5)总结

使用Feign的步骤:

① 引入依赖

② 添加@EnableFeignClients注解

③ 编写FeignClient接口

④ 使用FeignClient中定义的方法代替RestTemplate

相关文章:

  • golang工程组件——redigo使用(redis协议,基本命令,管道,事务,发布订阅,stream)
  • Spring-AOP不生效之内部方法调用
  • 【Android】画面卡顿优化列表流畅度一
  • uboot - 驱动开发 - dw watchdog
  • 无梯度强化学习:使用遗传算法进化代理
  • 【服务配置文件详解】补充rsyslog服务的配置文件翻译解读
  • 【hcie-cloud】【5】华为云Stack规划设计之华为云Stack标准化配置、缩略语【下】
  • 前端Vue 结合xlxs库实现解析excel文件,并动态组装表头!
  • CMakeFiles文件夹有什么用
  • Xmake v2.8.5 发布,支持链接排序和单元测试
  • 5G毫米波通信中的关键技术
  • 3D物理模拟和视觉特效软件SideFX Houdini mac中文介绍
  • 什么是记忆能力与泛化能力
  • Mac电脑Visio文件编辑查看软件推荐Visio Viewer for Mac
  • C++多态特性
  • ES6指北【2】—— 箭头函数
  • Android交互
  • angular2开源库收集
  • Idea+maven+scala构建包并在spark on yarn 运行
  • js对象的深浅拷贝
  • js算法-归并排序(merge_sort)
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux链接文件
  • Map集合、散列表、红黑树介绍
  • mysql中InnoDB引擎中页的概念
  • node 版本过低
  • Shadow DOM 内部构造及如何构建独立组件
  • spring cloud gateway 源码解析(4)跨域问题处理
  • SQLServer之创建显式事务
  • Web设计流程优化:网页效果图设计新思路
  • 为什么要用IPython/Jupyter?
  • 优秀架构师必须掌握的架构思维
  • 再谈express与koa的对比
  • #define
  • (31)对象的克隆
  • (70min)字节暑假实习二面(已挂)
  • (LeetCode 49)Anagrams
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .gitignore文件设置了忽略但不生效
  • .net 4.0发布后不能正常显示图片问题
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net core 依赖注入的基本用发
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 表达式计算:Expression Evaluator
  • .net 简单实现MD5
  • .NET 设计一套高性能的弱事件机制
  • .NET 中 GetProcess 相关方法的性能
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net中调用windows performance记录性能信息