`
wang94777600
  • 浏览: 11562 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringCloud- 第九篇 Feign

 
阅读更多

1:Feign是什么

Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可。官网:https://github.com/OpenFeign/feign

2:Feign能干什么

  • Feign旨在使编写Java Http客户端变得更容易。
  • 前面在使用Spring Cloud Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。
  • Spring Cloud Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了使用Spring cloud ribbon时,自动封装服务调用客户端的开发量。
  • Spring Cloud Feign具备可插拔的注解支持,包括Feign注解和JAX-RS注解,同时还扩展了Spring MVC的注解支持。同时还集成Ribbon和Eureka,以在使用Feign时提供Http客户端的负载均衡;集成了Hystrix以提供熔断、降级等功能。
  • 另外,对于Feign自身的一些主要组件,比如说编码器和解码器等,都支持可插拔的方式,在有需要的时候可以方便地扩展和替换它们。

3:Feingn特性

  • 可插拔的注解支持,包括Feign注解和JAX-RS注解
  • 支持可插拔的HTTP编码器和解码器
  • 支持Hystrix和它的Fallback
  • 支持Ribbon的负载均衡
  • 支持HTTP请求和响应的压缩

4: Feign集成

4.1:加入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

4.2:启动类

需要添加开启feign的注解,示例如下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

4.3:定义接口,示例如下:

@FeignClient(value = "userService")
public interface UserService {
    @RequestMapping(value = "/userServiceProvider", method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

4.4:配置文件

基本类似于Ribbon的配置, application.properties示例如下:

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
server.port=8770
spring.application.name=service-feign

4.5:调用服务的Controller类

  • Feign集成了Ribbon,依然是利用了Ribbon维护了userService的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口,以声明式的方法,优雅而简单的实现了服务调用
  • Spring Cloud Feign只支持spring mvc 3.x系列的, springmvc4.0出现的一系列注解比如@GetMapping,@PostMapping,@PutMapping等等是Feign是不支持的


    image.png
分享到:
评论

相关推荐

    springcloud-demo-master_spring-cloud_cloud_

    【标题】"springcloud-demo-master_spring-cloud_cloud_" 指的是一个基于Spring Cloud的示例项目,这个项目主要用于学习和演示Spring Cloud的核心功能和基本流程。Spring Cloud是微服务架构的重要工具集,它提供了...

    SpringCloud第3季2024.7z

    本资源"SpringCloud第3季2024.7z"很可能包含的是关于SpringCloud最新版本的教程或资料,可能涵盖了一些最新的特性和最佳实践。 1. **服务发现**:SpringCloud使用Eureka作为默认的服务注册与发现组件。服务提供者向...

    spring cloud视频教程

    - 掌握创建第一个 Spring Cloud 项目的步骤。 2. **Eureka 服务注册与发现**: - Eureka 作为服务注册中心的角色,如何实现服务提供者和服务消费者之间的通信。 - 学习服务实例的注册、心跳机制、服务健康检查等...

    毕业设计之SpringCloud-B2C电子商务平台服务端.zip

    【标题】"SpringCloud-B2C电子商务平台服务端"是一个基于SpringCloud框架构建的电子商务系统后端项目。SpringCloud是一个微服务开发工具集,它利用SpringBoot的开发便利性,快速构建分布式系统中的配置管理、服务...

    springCloud项目练习

    第九课: 服务链路追踪(Spring Cloud Sleuth) 第十课: 高可用的服务注册中心 第十一课:docker部署spring cloud项目 第十二课: 断路器监控(Hystrix Dashboard) 第十三课: 断路器聚合监控(Hystrix Turbine) 第十...

    spring-cloud.pdf

    Spring Cloud由多个模块组成,包括Spring Cloud Context, Spring Cloud Commons, Spring Cloud LoadBalancer, Spring Cloud CircuitBreaker, ConfigurationProperties, Spring Cloud Config, Spring Cloud Netflix, ...

    spring boot+spring cloud视频教学下载全套

    spring boot+spring cloud视频教学下载全套。( ├1 公开课.avi ├10 4.6 Ribbon-3使用配置文件自定义Ribbon Client.avi ├11 4.7 Ribbon-4 Ribbon脱离Eureka使用.avi ├12 4.8 Feign-1 Feign的简介及基础使用.avi ...

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    37.硅谷学习_SpringCloud_Feign工程构建 38.硅谷学习_SpringCloud_Hystrix断路器是什么 39.硅谷学习_SpringCloud_服务熔断 40.硅谷学习_SpringCloud_服务降级 41.硅谷学习_SpringCloud_服务降级熔断小总结 42....

    cloud-helloworld第一示例程序

    本示例程序"cloud-helloworld"是一个入门级的项目,旨在帮助初学者理解和实践基于Java的云应用程序开发,特别是结合了Spring Cloud和Spring Boot框架。这两个框架在企业级微服务架构中广泛使用,为开发者提供了强大...

    【附答案解析】最常⻅的 SpringCloud 微服务⾯试题(VIP典藏版)

    Spring Cloud微服务⾯试题 1. Spring Cloud Netflix 和 Spring Cloud Alibaba 包括哪些组件 2. Nacos是CP还是AP? 3. Nacos作为注册中⼼应该选择是CP还是AP? 4. Nacos如何实现就近访问? 5. Nacos底层负载均衡...

    尚硅谷SpringCloud第一季最新笔记

    尚硅谷是一家知名的在线教育机构,其推出的SpringCloud第一季课程由周阳老师主讲,深受学员喜爱。本笔记集合了该课程的核心知识点,旨在帮助开发者深入理解SpringCloud的基础概念和实际应用。 1. **Eureka**:作为...

    SpringCloud接收文件

    在SpringCloud框架中,文件上传和下载是常见的功能需求,特别是在构建微服务架构时。SpringCloudFileSvr可能是一个专门处理文件操作的服务,用于提供文件的上传、存储和下载等功能。下面将详细介绍如何在SpringCloud...

    SpringCloud学习代码

    SpringCloud是中国开发者非常熟悉的一个微服务框架,它提供了一系列用于构建分布式系统的工具,极大地简化了在云端部署和管理复杂应用的流程。以下是对标题和描述中提到的关键知识点的详细解释: 1. **配置管理**:...

    springCloud+rabbitMq

    标题 "springCloud+rabbitMq" 暗示了这篇内容是关于如何在Spring Cloud框架中集成并使用RabbitMQ的教程。Spring Cloud是微服务架构中的一个组件集合,提供了服务发现、配置管理、断路器等核心功能,而RabbitMQ则是一...

    2020.9最新-Spring Cloud视频教程.txt

    根据提供的文件信息,我们可以推断出这是一份关于2020年9月最新的Spring Cloud视频教程的相关资料。虽然描述部分的信息重复了多次,并没有提供实际的教程内容概述,但我们可以基于标题、标签以及部分内容中可能存在...

    springboot+springcloud 第9篇

    此文件是springboot跟springcloud的整合,搭建一个eureka的服务注册中心,并有服务提供者跟 ribbon消费者和feign消费者 实现负载均衡代码。hystrix dashboard 可视化监控数据。trubine集群监控。Zuul自定义路由规则...

    SpringCloud组件详细介绍word文档

    ### Spring Cloud 组件详细介绍 #### 一、Spring Cloud 概述 Spring Cloud 是一套完整的微服务解决方案,由多个子项目组成,旨在为开发者提供构建服务发现注册、配置管理、智能路由、消息总线、负载均衡、断路器、...

    spring-cloud-microservices-development:Spring Cloud微服务开发。《 Spring Cloud微服务架构开发实战》

    8. **Spring Cloud Netflix**:Spring Cloud Netflix包含了一系列组件,如Zuul(边缘服务/API网关)、Eureka(服务注册与发现)、Hystrix(断路器模式实现)、Feign(声明式HTTP客户端)等,用于构建复杂的分布式...

    springcloud项目Demo

    【SpringCloud项目Demo】是一个基于SpringCloud框架的示例项目,旨在帮助开发者理解和学习如何在实际应用中使用SpringCloud构建微服务架构。SpringCloud是一系列工具的集合,它为开发者提供了在分布式系统(如配置...

    深入理解Spring Cloud与微服务构建 方志朋 高清pdf

    ### 深入理解Spring Cloud与微服务构建 #### 核心知识点概览 本文将围绕《深入理解Spring Cloud与微服务构建》一书的主要内容展开讨论,旨在为读者提供一个全面而深入的理解Spring Cloud及微服务架构的基础。本书...

Global site tag (gtag.js) - Google Analytics