Feign远程调用

先来看我们以前利用RestTemplate发起远程调用的代码:

存在下面的问题:

•代码可读性差,编程体验不统一

•参数复杂URL难以维护

Feign是一个声明式的http客户端,官方地址:GitHub - OpenFeign/feign: Feign makes writing java http clients easier

其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。

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的功能:

3)编写Feign的客户端

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

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@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:

是不是看起来优雅多了。

5)总结

使用Feign的步骤:

① 引入依赖

② 添加@EnableFeignClients注解

③ 编写FeignClient接口

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

Feign-基于Feign远程调用相关推荐

  1. SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用

    什么是SpringCloud 微服务架构 • "微服务"一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到 http://mar ...

  2. 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

    在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnection.Ap ...

  3. day02 Nacos集群配置、Feign远程调用和统一网关Gateway

    1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用. 统一配置管理 当微服务部署的实例越来越多,达到数十.数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错.我们需要一 ...

  4. 怎么用feign远程调用别人的接口_Feign - HTTP接口调用- 单独使用 - 实战

    目录 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -26[ 博客园 总入口 ] 写在前面 ? 大家好,我是作者尼恩.目前和几个小伙伴一起,组织了一个高并发的实战社群[疯狂创客圈].正在 ...

  5. Feign远程调用组件与Gateway网关组件

    文章目录 1. Feign远程调用组件 1.1 Feign简介 1.2 Feign配置应用 1.3 Feign对负载均衡的支持 1.4 Feign对熔断器的支持 1.5 Feign对请求压缩和响应压缩 ...

  6. 微服务8 Feign远程调用

    目录 1.问题 2.使用 2.1导入依赖 2.2添加注解 2.3编写Feign客户端 2.4修改OrderService 2.3访问 java.lang.AbstractMethodError: Re ...

  7. Feign远程调用组件 和 GateWay网关组件

    在之前的案例中,服务消费者调用服务提供者的时候使用RestTemplate技术. 1.1 Feign简介 Feign是Netflix开发的一个轻量级RESTful的HTTP服务客户端(用它来发起请求,远 ...

  8. 怎么用feign远程调用别人的接口_spring cloud-openFeign声明式远程调用

    spring cloud-openFeign声明式远程调用 1.概述1.1.是什么Feign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上申明注解Git ...

  9. 远程调用 Spring Cloud Feign

    一. Feign简介 Feign [feɪn] 译文 伪装.Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后 ...

最新文章

  1. python 解决conda的environment未被激活解决方案
  2. 『设计模式』再谈Macdonald的汉堡口味--策略模式
  3. java aqs实现原理_JAVA基础学习之-AQS的实现原理分析
  4. bootstrap的依赖_这五款超好用的Bootstrap扩展,让你的Web开发事半功倍
  5. ORA-00119: invalid specification for system parameter LOCAL_LISTENER;
  6. INV 调试: 如何获取库存物料事务处理调试信息
  7. GBase数据库事务隔离级别
  8. 【树莓派】搭建局域网内网页实时视频监控
  9. ORA-01045 :user 用户名 lacks create session privilege; logon denied
  10. vue中接口返回数据过大回显导致页面崩溃解决方法
  11. 批量保存网页为html文件的几种方法
  12. 被称为偏执的企业家,他成功跻身中国民企500强
  13. 高中数学补习:集合与常用逻辑用语
  14. 设施网络选址的基本方法,网络设施选址的方法
  15. 《再探设计模式》装饰者:为什么比继承更灵活?
  16. Ruby on Rails 之旅(七)—— Ruby on Rails 入门(5)
  17. 硬件学习笔记(器件篇)—— 铝电解电容(二)
  18. javascript的V8引擎的初步使用
  19. MATLAB App Designer入门实战(三)
  20. 漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

热门文章

  1. Activity的taskAffinity属性
  2. Linux date命令的用法
  3. 关于控件的AutoSize属性影响界面布局的问题解决
  4. 关于使用spring admin和consul一起做监控需要注意的配置
  5. day11 函数的参数列表
  6. 【持续更新】JAVA面向对象多线程编程的一些tips
  7. python实现计算器
  8. java nio的使用
  9. String对象中常用的方法
  10. javascript实用技巧--数组.