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

一文教会你如何简单使用Fegin进行远程服务调用

文章目录

  • 1、fegin的基本介绍
  • 2、fegin的基本使用步骤
  • 3、项目中的实际运用
  • 4、测试

三连哦
前言

在分布式微服务中,少不了会进行不同服务之间的相互调用,比如A服务要调用B服务中的接口,如何简单方便的实现呢?fegin可以来帮助。

1、fegin的基本介绍

Feign 是 Netflix 开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。

Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。

Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。

简单来说就是调用别的远程服务的接口就像调用自己本地接口一样方便。

2、fegin的基本使用步骤

步骤

  • 1、pom文件中引入依赖
  • 2、启动类添加注解
  • 3、创建接口调用三方服务

3、项目中的实际运用

  • 1、在需要使用 feign 发起 http 请求的服务中引入 feign 的依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 2、在服务的启动类中添加注解 @EnableFeignClients,开启Feign的功能
/**
*要指定远程调用功能放的基础包
*com.atguigu.gulimall.product.feign"对应的是所有feign类所存在的文件路径,表示扫描该路径下所以含有@FeignClient注解的类
*/
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {public static void main(String[] args) {SpringApplication.run(GulimallProductApplication.class, args);}}
  • 3、编写一个接口,接口告诉springcloud这个接口需要调用远程服务
@FeignClient("gulimall-coupon")
public interface CouponFeignService {/*** 1、CouponFeignService.saveSpuBounds(spuBoundTo);*      1)、@RequestBody将这个对象转为json。*      2)、找到gulimall-coupon服务,给/coupon/spubounds/save发送请求。*          将上一步转的json放在请求体位置,发送请求;*      3)、对方服务收到请求。请求体里有json数据。*          (@RequestBody SpuBoundsEntity spuBounds);将请求体的json转为SpuBoundsEntity;* 只要json数据模型是兼容的。双方服务无需使用同一个to* @param spuBoundTo* @return*/@PostMapping("/coupon/spubounds/save")R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo);}
  • 4、具体业务中调用
        //5、保存spu的积分信息;gulimall_sms->sms_spu_boundsBounds bounds = vo.getBounds();SpuBoundTo spuBoundTo = new SpuBoundTo();BeanUtils.copyProperties(bounds,spuBoundTo);spuBoundTo.setSpuId(infoEntity.getId());R r = couponFeignService.saveSpuBounds(spuBoundTo);if(r.getCode() != 0){log.error("远程保存spu积分信息失败");}
  • 5、远程服务

在这里插入图片描述

4、测试

通过debug模式运行,可以看到调用远程服务后,这里返回了处理的结果,说明调用远程服务成功。

在这里插入图片描述

在另外一个服务的控制台下,这里打印出相应的信息,说明改服务被调用了

在这里插入图片描述

http://www.lryc.cn/news/36531.html

相关文章:

  • OpenAI——CLIPs(代码使用示例)
  • 什么样的人更适合创业?那类人创业更容易成功?
  • JavaApi操作ElasticSearch(强烈推荐)
  • NFT的前景,元宇宙的发展
  • C#基础教程20 预处理器指令
  • 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束
  • 国外SEO策略指南:确保你的网站排名第一!
  • Tik Tok新手秘籍,做好五点可轻松起号
  • 【Linux】网络入门
  • 回溯法——力扣题型全解【更新中】
  • 【华为机试真题详解 Python实现】分奖金【2023 Q1 | 100分】
  • netlink进行网卡重命名
  • 2023年春【数据分析与挖掘】文献精读(一)-1:针对COVID-19,使用聚类方法有效提取生物特性关联进而识别预防COVID-19的药物
  • 【Go自学第三节】Go的范围(Range)用法
  • 【备战面试】每日10道面试题打卡-Day6
  • Stable Diffusion 个人推荐的各种模型及设置参数、扩展应用等合集(不断更新中)
  • Salesforce 2023财年逆风增长,现金流达历史最高!
  • 2023年3月全国数据治理工程师认证DAMA-CDGA/CDGP考试怎么通过?
  • 【安卓软件】KMPlayer-一款完美的媒体播放器 可以播放所有格式的字幕和视频
  • ClickHouse--分布式查询多副本的路由规则
  • Linux 常用命令总结
  • 超分扩散模型 SR3 可以做图像去雨、去雾等恢复任务吗?
  • STM32Cube STM32MP157 M4端CAN通讯实战
  • npm install报错unable to resolve dependency tree
  • 力扣sql简单篇练习(二十六)
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第九套解析(详细)
  • C++回顾(十六)—— 异常处理机制
  • 【100个 Unity实用技能】 | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理
  • 哈希表的实现
  • 搞懂海明码