《企业实战分享 · Feign 使用合集》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流,欢迎留言评论。👍


写在前面的话

前不久博主整理了 《企业实战分享 · MyBatis 使用合集》,粉丝私信反响不错,今天继续整理它的姐妹篇。
博主所在公司的技术栈为:后端 SpringCloud + 前端 Vue/Nuxt,在后端开发中,内部服务间的调用采用了Feign来完成,这个和MyBatis一样属于企业开发的高频用法,因此也做一下知识汇总,希望与君共勉。


Feign 基础入门

技术简介
Feign 是 Spring Cloud 提供的声明式、模板化的 HTTP 客户端, 它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。
Spring Cloud 集成 Feign 并对其进行了增强,使 Feign 支持了 Spring MVC 注解;Feign 默认集成了 Ribbon,所以Fegin默认就实现了负载均衡的效果。
博主所在公司的新框架对内部远程调用做了一次升级,采用 OpenFeign 调用方式替代旧框架内部服务之间的 Dubbo 和 HttpUtils 调用方式。
OpenFeign 是一个声明式、模板化的 HTTP 客户端,可以帮助开发者更快捷、优雅地调用HTTP API。

使用前提

Tips:简单介绍使用Feign的一些前置步骤,这些其实都是框架搭建人员负责的,具体开发一般关心后续实质用法。

Step1、引入 Maven 依赖

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

Step2、在启动类添加@EnableFeignClients,或者为Feign接口添加@Component等注解,总之,需要被Spring框架识别为一个组件,以便Spring可以管理它。
Step3、在服务提供者定义一下 Controller,
Step4、在服务消费者定义Feign 客户端,并按需使用

基础用法
以门户调用医嘱的接口为例,实现 Feign 调用有两种方式:
1、服务消费方门户,自己开发对应的 Feign 接口,指向对方服务;
2、服务提供方医嘱, 在 api 模块书写对应的 Feign 接口,完成后发布私服,提供服务消费方门户调用;

Tips:两种方式各有优缺点,方案1可以减少不需要的接口和实体影响,改造期间减少对方服务影响;方案2可以减少重复编码,增加复用。原则上推荐在消费端书写 Feign 接口。

示例 - 服务提供方

@PostMapping(value="/extHandle")
ApiResult<String> extHandle(@RequestBody V2ShiftRecordPrintRo v2ShiftRecordPrintRo) throws Exception {
   
     //省去具体业务逻辑
}

示例 - Feign 接口

@FeignClient(value = FeignConstant.Service.PORTAL, url = FeignConstant.Url.PORTAL, path = "/inner/ext")
public 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神刘玉栋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值