微服务之Feign的介绍与使用小结

目录
  • 前言:
  • Feign的简介
  • Feign的优点
  • Feign如何使用
  • Feign的使用总结

前言:

最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象

Feign的简介

Feign 是一个声明式的伪RPC的REST客户端,它用了基于接口的注解方式,很方便的客户端配置,Spring Cloud 给 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka进行支持负载均衡。

Feign 是⼀个 HTTP 请求的轻量级客户端框架。通过接⼝口和注解的⽅式发起 HTTP 请求调⽤,面向接口编程,并不是像 Java 中通过封装 HTTP 请求报⽂的⽅式直接调⽤。
服务消费⽅拿到服务提供⽅的接⼝,然后像调⽤本地接⼝⽅法⼀样去调⽤,实际发出的是远程的请求。让我们更加便捷和优雅的去调⽤基于 HTTP 的 API,被⼴泛应⽤在 Spring Cloud 的解决⽅案中。

Feign的优点

之前我们利用RestTemplate发起远程调用的代码:

String url = "http://userservice/user/" + order.getUserld();
User user = restTemplate.getForObject(url, User.class);

上面的存在的问题有代码:
可读性差,编程体验不统一;
参数复杂URL难以维护
Feign是一个声明式的http客户端,官方地址:Feign官方链接

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

Feign如何使用

还是以我们之前的项目为例
在order-service服务的pom文件中引入feign依赖:

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

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

@EnableFeignClients
@MapperScan("cn.itcast.order,mapper")
@SpringBootApplication
public class OrderApplication
public static void main(String[] args) [
SpringApplication.run(OrderApplication.class,args)

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

package cn.itcast.order.client;​
import cn.itcast.order.pojo.User;
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来发送了。

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

@Autowired
private UserClient userClient;
public Order query0rderById(Long orderId)
//1.查询订单
Order order = orderMapper.findById(orderId);
//2. 利用Feign发起http请求 查询用户
Useruser = userClient.findById(order.getUserId());
//3.封装user到0rder
order.setUser(user);
// 4.返回
return order;

Feign的使用总结

使用Feign的步骤:

第①步 引入依赖

第②步 添加@EnableFeignClients注解

第③步 编写FeignClient接口

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

到此这篇关于微服务之Feign的介绍与使用的文章就介绍到这了,更多相关微服务Feign内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Feign扩展包实现微服务间文件上传

    在Spring Cloud 的Feign组件中并不支持文件的传输,会出现这样的错误提示: feign.codec.EncodeException: class [Lorg.springframework.web.multipart.MultipartFile; is not a type supported by this encoder. at feign.codec.Encoder$Default.encode(Encoder.java:90) ~[feign-core-9.5.1.jar:

  • 使用Feign实现微服务间文件下载

    在使用Feign做服务间调用的时候,当下载大的文件会出现堆栈溢出的情况.另外,文件管理服务(服务提供者)文件下载接口无返回值,是通过HttpServletRespoonse传输的流数据来响应,那么服务消费者该如何接受下载的数据呢? 一. 示例介绍 我们调用feign_upload_second的下载文件接口下载文件,feign_upload_second内部使用feign调用feign_upload_first实现文件下载. 二.feign_upload_first服务提供者 服务提供者下载文件

  • 使用FeignClient进行微服务交互方式(微服务接口互相调用)

    目录 使用FeignClient进行微服务交互 先写一个公共方法 然后写一个Feign调用 被Feign调用的方法如下 @FeignClient调用微服务注意事项 FeignClient接口不能使用@GettingMapping之类的组合注解 FeignClient接口中如果使用到@PathVariable FeignClient多参数的构造 使用FeignClient进行微服务交互 先写一个公共方法   public String getSettingValue(String name) {

  • 使用Feign实现微服务间文件传输

    在很多时候我们会遇到微服务之间文件传输,很多时候我们可以通过序列化等方式解决(如图片等). 最近项目中有个excel上传,以及多媒体文件上传,直接报错. 也试了2种解决方式,都不可行. 1.写一个文件Encoder解析器,会出现其他的rest请求出现encoder错误 2.springcloud feign有一个规范,不可以传输2个对象,可以是一个对象带几个参数方式. 那么我们现在需要一种方式,不配置全局的解析器,而是通过Feign Builder 去管理上传文件,这种方式管理起来也较为方便.

  • 微服务之Feign的介绍与使用小结

    目录 前言: Feign的简介 Feign的优点 Feign如何使用 Feign的使用总结 前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象 Feign的简介 Feign 是一个声明式的伪RPC的REST客户端,它用了基于接口的注解方式,很方便的客户端配置,Spring Cloud 给 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka进行支持负载均衡. Feign 是⼀个 HTT

  • 微服务通过Feign调用进行密码安全认证操作

    微服务通过Feign调用进行密码安全认证 在项目中,微服务之间的通信也是通过Feign代理的HTTP客户端通信,为了保护我们的业务微服务不被其他非法未经允许的服务调用, 我们要进行访问授权配置! Feign是客户端配置,@FeignClient注解有个configuation属性,可以配置我们自定义的配置类,在此类中注入微服务认证拦截器 /** * 访问微服务需要密码 * @return */ @Bean public FeignBasicAuthRequestInterceptor reque

  • .Net Core微服务网关Ocelot基础介绍及集成

    网关是什么 简单来说,网关就是暴露给外部的请求入口.就和门卫一样,外面的人想要进来,必须要经过门卫.当然,网关并不一定是必须的,后端服务通过http也可以很好的向客户端提供服务.但是对于业务复杂.规模庞大的项目来说,使用网关有很多无法舍弃的好处,比如可以进行统一的请求聚合来节省流量.降低耦合度,可以赋予项目熔断限流的能力提高可用性等等. ocelot是什么 ocelot是.net core实现的开源的api网关项目,开源地址:https://github.com/ThreeMammals/Oce

  • SpringCloud Feign实现微服务之间相互请求问题

    目录 Feign简介 Spring Cloud 组件依赖版本 Feign实现服务之间访问 ☘创建nacos-consumer-feign微服务 创建feign client ☘nacos-provider微服务 Feign微服务之间访问测试 ☘Feign容错机制 上篇文章说了通过RestTemplate实现微服务之间访问:https://www.jb51.net/article/252981.htm,这篇文章将通过Feign实现微服务之间访问.代码基于RestTemplate实现微服务之间访问基

  • 微服务如何通过feign.RequestInterceptor传递参数

    目录 微服务通过feign.RequestInterceptor传递参数 创建自定义请求拦截器 具体获取逻辑如下 feign的拦截器RequestInterceptor 首先创建自定义的RequestInterceptor 然后定义一个feign的接口类 再创建一个controller 运行程序测试一下接口 查看程序打印 微服务通过feign.RequestInterceptor传递参数 Feign 支持请求拦截器,在发送请求前,可以对发送的模板进行操作,例如设置请求头等属性,自定请求拦截器需要

  • 详解用Spring Boot Admin来监控我们的微服务

    1.概述 Spring Boot Admin是一个Web应用程序,用于管理和监视Spring Boot应用程序.每个应用程序都被视为客户端,并注册到管理服务器.底层能力是由Spring Boot Actuator端点提供的. 在本文中,我们将介绍配置Spring Boot Admin服务器的步骤以及应用程序如何集成客户端. 2.管理服务器配置 由于Spring Boot Admin Server可以作为servlet或webflux应用程序运行,根据需要,选择一种并添加相应的Spring Boo

  • 使用kotlin编写spring cloud微服务的过程

    创建工程 使用idea的spring initializr创建一个项目,语言选择kotlin, 类型为gradle. 根据需要选择依赖 配置文件 yml或者properties文件和java是完全一样的,这里不详细说明 修改build.gradle.kts中的参数: plugins { //spring boot版本 id("org.springframework.boot") version "2.3.3.RELEASE" //自动依赖包版本管理 id("

  • 从零开始使用Dapr简化微服务的示例

    目录 序言 1.安装Docker 2.安装Dapr CLI 3.安装Net6 SDK 4.创建应用程序 4.1.服务调用 4.2.发布订阅 4.3.状态管理 4.4.链路追踪  5.总结 序言 现有的微服务模式需要再业务代码中集成大量基础设施模块,比如注册中心,服务发现,服务调用链路追踪,请求熔断,重试限流等等,使得系统过于臃肿重量级. Dapr作为新一代微服务模式,使用sidecar模式,简化了现有微服务系统代码,将基础设施层以sidecar模式分离,使得开发人员更集中于业务逻辑编写. 本文以

  • 深入理解DevOps+微服务框架

    单体架构 单体架构是什么 在搞懂DevOps和微服务之前,需要先搞懂什么是单体应用/单体架构.简单来说,就跟在校的一些小项目一样,项目的Demo写好了,找一台服务器安装环境,然后把jar包远程上服务器,然后跑起来服务就可以了.这个时候进行简单的服务监控也不难,如果项目出了问题,查看一下运行日志,就可以知道哪一步出问题了.如果懂一些脚本,也可以写一些脚本分析日志,解放双手监控服务器.这种单体架构就是采用瀑布流方式开发的,服务的流程就是:设计 -> 开发 -> 测试 -> 部署 . 单体B/

  • docker maven plugin快速部署微服务的详细流程

    目录 一.前置条件 二.部署方法 1.开放远程部署端口 3.修改application文件 4.打包上传并创建镜像 5.启动容器 三.总结 一.前置条件 linux下装好docker并启动 1.使用国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh 2.启动docker systemctl start docker.service 二.部署方法 1.开放远程部署端口 <1>修改 docker 的配置文件 /lib/s

随机推荐