iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >微服务Springcloud之Feign如何使用
  • 420
分享到

微服务Springcloud之Feign如何使用

2023-07-05 18:07:08 420人浏览 安东尼
摘要

本文小编为大家详细介绍“微服务SpringCloud之Feign如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“微服务springcloud之Feign如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧

本文小编为大家详细介绍“微服务SpringCloud之Feign如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“微服务springcloud之Feign如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、Feign概述

        Feign是spring cloud提供的声明式、模板化的Http客户端, 它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。

        Spring Cloud集成Feign并对其进行了增强,使Feign支持了Spring mvc注解;Feign默认集成了Ribbon,所以Fegin默认就实现了负载均衡的效果。

微服务Springcloud之Feign如何使用

二、Feign入门

        注意:以下所有步骤实现的前提是需要在启动类上加入注解 @EnableFeignClients 主要是为开启feign接口扫描

1.创建服务提供者(provider)

导入依赖:

<!--Spring Cloud OpenFeign Starter --><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

代码如下(示例):

        在服务提供者中调用servic层获取数据

//创建服务提供者@RestController@RequestMapping("/provider")public class ProviderController {@Autowiredprivate UserService userService; @RequestMapping("/getUserById/{id}")public User getUserById(@PathVariable Integer id){return userService.getUserById(id);}}

2.创建feign接口    

代码如下(示例):

        解释都放在了代码中,可以直接复制粘贴

@FeignClient("feign-provider")@RequestMapping("/provider")public interface UserFeign {     @RequestMapping("/getUserById/{id}")    User getUserById(@PathVariable("id") Integer id);     @RequestMapping("/deleteUserById")    User deleteUserById(@RequestParam("id") Integer id);//?形式拼接参数,?id=250     @RequestMapping("/addUser")    User addUser(@RequestBody User user);//pojo--->JSON}

3、创建服务消费者(consumer)

//服务消费者@RestController@RequestMapping("/consumer")public class ConsumerController {     @Autowired    private UserFeign userFeign;     @RequestMapping("/getUserById/{id}")    public User getUserById(@PathVariable Integer id){        return userFeign.getUserById(id);    }}

        application.yml文件

server:
  port: 80
spring:
  cloud:
    Nacos:
      discovery:
        server-addr: 192.168.209.129:8848
  application:
    name: feign-consumer

三、Feign 原理

将feign接口的代理类扫描到Spring容器中:
        @EnableFeignClients开启feign注解扫描:FeignClientsReGIStrar.registerFeignClients()扫描被 @FeignClient标识的接口生成代理类,并把接口和代理类交给Spring的容器管理。
    2、为接口的方法创建RequestTemplate
        当consumer调用feign代理类时,代理类会调用SynchronousMethodHandler.invoke()创建RequestTemplate(url,参数)
    3、发出请求
        代理类会通过RequestTemplate创建Request,然后client(URLConnetct、HttpClient、OkHttp)使用Request发送请求

四、Feign优化

1、开启feign日志

feign日志级别

微服务Springcloud之Feign如何使用

         在consumer的yml文件中加入以下代码

 feign:  client:    config:      feign-provider: #此处写的是服务名称,针对我们feign微服务的配置,如果是default就是全局配置        loggerLevel: full #配置Feign的日志级别,相当于代码配置方式中的Logger #在application.yml中使用 logging.level.<Feign客户端对应的接口的全限定名> 的参数配置格式来开启指定客户端日志logging:  level:    com.bjpowernode.feign: debug

随后启动测试

        出现以下结果表示日志输出成功 

微服务Springcloud之Feign如何使用

2、feign超时问题

        首先、Feign的负载均衡底层用的就是Ribbon,所以这里的请求超时配置其实就是配置Ribbon,当出现请求超时会出现以下报错。

微服务Springcloud之Feign如何使用

注意 :当开启日志配置之后,feign超时问题不会出现报错情况。

        针对超时问题我们需要在之前的日志配置中加入以下内容

ConnectTimeout: 5000 #请求连接的超时时间

ReadTimeout: 5000 #请求处理的超时时间

微服务Springcloud之Feign如何使用

3、http连接池

(1)、连接池介绍

        首先,我们知道HTTP连接需要经过三次握手,四次挥手的过程,这是很耗费性能的;所以HTTP连接池帮助我们节省了这一步。

        同时Feign的HTTP客户端支持三种框架

        HttpURLConnection、HttpClient、OkHttp;默认是HttpURLConnection

(2)、连接池使用

         先引入依赖到公共接口工厂interfac,如果没有做公共接口就放入consumer

<dependency>    <groupId>io.GitHub.openfeign</groupId>    <artifactId>feign-httpclient</artifactId></dependency>

讲真的,其实这已经完成了,但是,我们还是要知道一下它的原理,否则显得太片面了

在配置文件中我们看到,连接池引入之后默认是开启的,所以我们就不用再写了

微服务Springcloud之Feign如何使用

4、gzip压缩

压缩能力

        当 Gzip 压缩到一个纯文本文件时,效果是非常明显的,大约可以减少 70%以上的文件大小。&middot;

这个开启也是比较简单,只需要在consumer中yml文件中写入以下代码即可

微服务Springcloud之Feign如何使用

此时在浏览器中就可以看到我们提供的压缩方式,和浏览器支持的压缩方式 

微服务Springcloud之Feign如何使用

读到这里,这篇“微服务SprinGCloud之Feign如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: 微服务Springcloud之Feign如何使用

本文链接: https://www.lsjlt.com/news/354508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微服务Springcloud之Feign如何使用
    本文小编为大家详细介绍“微服务Springcloud之Feign如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“微服务Springcloud之Feign如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-05
  • SpringCloud feign微服务调用之间的异常处理方式
    如何优雅地处理微服务间调用的异常 现在微服务架构盛行,其中spring cloud方案就很具有代表。 那么在微服务之间进行调用,如果被调用的服务挂了,调用方如何感知呢? 一、加上hy...
    99+
    2024-04-02
  • SpringCloud Feign实现微服务之间相互请求问题
    目录Feign简介Spring Cloud 组件依赖版本Feign实现服务之间访问☘创建nacos-consumer-feign微服务创建feign client☘nacos-pro...
    99+
    2024-04-02
  • SpringCloud中Ribbon和Feign组件如何使用
    SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Ribbon简介1、基本概念Ribbon是一个客户...
    99+
    2023-06-02
  • 微服务之Feign的介绍与使用小结
    目录前言:Feign的简介Feign的优点Feign如何使用Feign的使用总结前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到...
    99+
    2024-04-02
  • SpringCloud微服务熔断器Hystrix如何使用
    这篇文章主要介绍了SpringCloud微服务熔断器Hystrix如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud微服务熔断器Hystrix如何使用文章都会有所收获,下面我们一起来看...
    99+
    2023-07-02
  • SpringCloud中Feign如何远程调用
    这篇文章将为大家详细讲解有关SpringCloud中Feign如何远程调用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言先来看我们以前利用RestTemplate发起远程调用的代码:这里就有几个问题:...
    99+
    2023-06-22
  • SpringCloud之Feign代理,声明式服务调用方式
    目录引入相关依赖然后再主入口启用注解引入相关依赖然后再主入口启用注解:@EnablFeign配合Ribbon、Hystrix的超时策略配置如下1.pom2.主入口3.配置文件4.业务...
    99+
    2024-04-02
  • springcloud如何使用Feign后台内部传递MultipartFile
    目录如何使用Feign后台内部传递MultipartFile先修改FeignClient接口内部调用注意点Feign进行跨服务传递MultipartFile文件通过feign进行跨服...
    99+
    2024-04-02
  • 详解SpringCloud微服务之Rest
    目录一、什么是RestTemplate?二、四种请求方式2.1 GET请求2.2 POST请求2.3 PUT请求2.4 DELETE请求一、什么是RestTemplate? Rest...
    99+
    2024-04-02
  • 如何使用SpringCloud搭建一个微服务框架
    这篇文章将为大家详细讲解有关如何使用SpringCloud搭建一个微服务框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Spring Cloud是一个基于Spring Boot实现的云应用...
    99+
    2023-05-30
    springcloud
  • SpringCloud 如何使用feign时的复杂参数传递
    Feign传参注意 最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上...
    99+
    2024-04-02
  • SpringCloud如何使用Feign实现动态路由操作
    这篇文章主要介绍“SpringCloud如何使用Feign实现动态路由操作”,在日常操作中,相信很多人在SpringCloud如何使用Feign实现动态路由操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S...
    99+
    2023-06-30
  • 微服务之间如何通过feign调用接口上传文件
    具体需求: 我们的项目是基于springboot框架的springcloud微服务搭建的,后端服务技术层面整体上分为business服务和core服务,business服务用于作为应...
    99+
    2024-04-02
  • springcloud 如何解决微服务之间token传递问题
    目录微服务之间token传递问题服务A中FeginInterceptor 服务A添加配置文件微服务服务间调用传递tokenRequestInterceptor是feign提...
    99+
    2024-04-02
  • SpringCloud微服务之Config知识总结
    目录一、什么是Spring Cloud Config?二、搭建GIT环境三、服务端示例四、客户端示例五、安全认证示例六、集群搭建示例一、什么是Spring Cloud Config?...
    99+
    2024-04-02
  • 如何用Eureka + Feign搭建分布式微服务
    目录EurekaFeign创建父项目注册中心主要依赖配置文件主类服务提供者主要依赖配置文件主类及Controller客户端主要依赖配置文件主类、Controller及Feign映射E...
    99+
    2024-04-02
  • springcloud feign服务之间调用,date类型转换错误的问题
    目录feign服务之间调用,date类型转换错误自定义feign请求头通过判断是否为feign请求openfeign服务间调用时日期格式异常异常为原因解决方法feign服务之间调用,...
    99+
    2024-04-02
  • 使用SpringCloud如何搭建一个netflix-eureka微服务集群
    使用SpringCloud如何搭建一个netflix-eureka微服务集群?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。新建项目选择需要引入的组件,然后下载下...
    99+
    2023-06-14
  • SpringCloud微服务熔断器使用详解
    目录一、简介二、作用三、核心概念3.1 熔断目的3.2 降级目的四、实例4.1 基于Hystrix4.1.1 熔断触发降级4.1.2 超时触发降级4.1.3 资源隔离触发降级4.2 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作