Spring Cloud —— Feign 实现服务调用
引言
本篇博客简单介绍 Feign 的基础知识和基本应用,以前一篇博客《Spring Cloud Alibaba——Nacos实现服务治理》为代码基础,实现更简单的微服务调用方式。
一、什么是Feign
restTemplate 实现的微服务调用方式:
// 调用商品微服务,查询商品信息
Product prod = restTemplate.getForObject("http://" + prodService.getHost() + ":" + prodService.getPort() + "/product/" + pid, Product.class);
依然存在一些不尽如人意的地方:
1、代码可读性不好
2、编码风格不统一。调用本地服务使用 @Autowired 注入的方式,而调用远程的服务是使用 restTemplate 调用。
基于以上两点问题,就出现了新的 Spring Cloud 组件 —— Feign。
Feign 是 Spring Cloud 提供的一个声明式伪 HTTP 客户端。它使得调用远程服务就像调用本地服务一样优雅,只需要创建一个接口并添加一个注解即可。
Nacos 很好的兼容了 Feign ,Feign 默认集成了 Ribbon,所以在 Nacos 下使用 Feign 默认就实现了负载均衡的效果。
二、Feign 的使用
微服务调用关系图:
上图中微服务调用关系是 通过 订单微服务 调用 商品微服务 查询商品信息,因此关于 Feign 的相关编码也都是在 shop-order 微服务上。
1、添加 Feign 依赖
<!--Feign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、在主类上添加 @EnableFeignClients 注解
@EnableDiscoveryClient
@EnableFeignClients
@SpringBootApplication
public class OrderApplication {...
3、创建 Feign 接口类
@FeignClient("service-product")
public interface ProductService {@GetMapping("/product/{pid}")public Product findByPid(@PathVariable("pid") Integer pid);
}
4、将调用方式从 restTemplate 改为 Feign:
然后启动订单和商品微服务,请求http://localhost:8091/order/prod/{pid} 接口发送下单请求:
可以看到商品信息无误,说明订单微服务已经成功获取到商品信息。
说明,以上案例的代码做了大量的省略,主要是去掉了一些数据库操作和配置等不必要的编码展示,具体操作都已经写在《Spring Cloud Alibaba——Nacos实现服务治理》中。
Spring Cloud —— Feign 实现服务调用相关推荐
- Spring cloud alibaba--Feign微服务调用组件
目录 1.1Feign优势 2.spring cloud alibaba整合Feign 3.Spring Cloud Feign日志配置 4.Feign契约配置 5.Feign超时时间配置 6.Ope ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
- Spring Cloud Feign原理详解
目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...
- 《深入理解 Spring Cloud 与微服务构建》第八章 声明式调用 Feign
·# <深入理解 Spring Cloud 与微服务构建>第八章 声明式调用 Feign 文章目录 一.Feign 简介 1.简介 2.工作原理 二.写一个 Feign 客户端 三.Fei ...
- Spring Cloud Feign 1(声明式服务调用Feign 简介)
Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...
- Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】
Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...
- Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...
- 最新版Spring Cloud Alibaba微服务架构-Openfeign服务调用篇
文章目录 前言 一.OpenFeign配置使用 1.引入pom依赖 2.消费端开启Feign服务调用 3.消费端动态代理Service接口 3.消费端测试 二.OpenFeign日志配置 1.全局配置 ...
- java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用
java版b2b2c社交电商spring cloud分布式微服务源码请加企鹅求求:一零三八七七四六二六.上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册 ...
最新文章
- pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数
- 在VS2010中创建自定义的代码段
- matlab 求x y关系,怎么用MATLAB建立数据间的函数关系
- 4.QT中进程操作,线程操作
- python策略模式包含角色_详解Python设计模式之策略模式
- C++接收字符串数组_Java 中初始化数组
- Can't create handler inside thread that has not called Looper.prepare()
- 怎样选择宽带上网产品--解读上海电信政企宽带新套餐
- linux如何运行java程序,Linux环境下运行简单java程序
- [网络流24题] 最长k可重线段集问题 (费用流)
- Vivado 查看HLS生成IP的资源和最高频率
- RPlidar学习(三)——RPlidar源代码库
- 1919: 【提高】滑翔翼
- Coursera奖学金申请模板
- 【转】Jsp自定义标签详解
- 淘宝运营 钻展基本了解 钻展投放方案 钻展投放注意的点
- SMBIOS信息概述 – DMI
- linux系统测试屏幕,RedHat Linux 9.0 操作系统测试题2
- 图像插值——线性差值
- objective-c语言特点及基础(相较于C语言)
热门文章
- java timezone_Java TimeZone getAvailableIDs()方法与示例
- c语言两个浮点数相加_C语言中两个浮点数或双精度数的模数
- 消息队列的其他实现方式
- Jsp中使用数据库连接池
- zoj 1091 Knight Moves
- EF中DB First模式下数据库中表结构变化时如何快速同步到EF模型中
- 什么是JSON? 以及jackson的使用
- linux2.6 gcc 4.8.2,在Red Hat Enterprise linux 6.5上安装GCC 4.8.2
- linux修图,修图只知道Photoshop?11款高逼格修图工具快来get!
- micropython用什么编译_micropython开发者指南