首页 > 其他分享 >SpringCloud之openFeign

SpringCloud之openFeign

时间:2023-04-01 15:36:06浏览次数:37  
标签:调用 请求 OpenFeign openFeign SpringCloud 注解 hello String

Feign

OpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅地调用http api。

OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。

feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求。还可以集成Ribbon和Hystrix,提供负载均衡和断路器。

英文表意为“假装,伪装,变形”, 是一个 Http 请求调用的轻量级框架,可以以 Java 接口注解的方式调用 Http 请求,而不用像 Java 中通过封装 HTTP 请求报文的方式直接调用。通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign 封装 了HTTP 调用流程,面向接口编程。

Feign和OpenFeign的关系

Feign本身不支持Spring MVC的注解,它有一套自己的注解

OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,
并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

 
 

SpringCloud从2020版本后就从OpenFeign中移除ribbon,如果要使用openfeign+ribbon,SpringCloud的版本可以选择Hoxton.SR9。

例子

此例子中SpringCloud版本是Hoxton.SR9,SpringBoot版本是2.3.2.RELEASE。
 
在ConsumerByRibbon模块(端口是8003)中加入

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

依赖。并在启动类上加入@EnableFeignClients注解开启对feign客户端的支持。

 

新建feign包,在包下新建HelloFeign接口:

@FeignClient(value = "producer")
public interface HelloFeign {
    @RequestMapping("/hello")
    public String hello(@RequestParam String name);
}

@FeignClient里面的value表示要调用的服务名。@RequestMapping是SpringMVC的注解。

 

在controller中引入:

@Autowired
private HelloFeign helloFeign;

@RequestMapping("/helloByFeign")
public String helloByFeign() {
   return helloFeign.hello("张三");
}

 

服务提供方(端口是8000):

@RequestMapping("/hello")
public String hello(String name) {
    return "hello," + name + "," + port;
}

 

访问http://localhost:8003/helloByFeign,看到

hello,张三,8000

 

又新启动一个服务提供方(端口是8002),访问http://localhost:8003/helloByFeign,重复几次看到hello,张三,8000和hello,张三,8002交替出现。这是feign使用了ribbon做了负载均衡。

标签:调用,请求,OpenFeign,openFeign,SpringCloud,注解,hello,String
From: https://www.cnblogs.com/shigongp/p/17278646.html

相关文章

  • SpringCloud常见问题描述
    1什么是SpringCloudSpringcloud流应用程序启动器是基于SpringBoot的Spring集成应用程序,提供与外部系统的集成。SpringcloudTask,一个生命周期短暂的微服务框......
  • SpringCloud和SpringBoot关系
    SpringCloud和SpringBoot关系SpringBoot专注于快速开发单个个体微服务-jarSpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整......
  • SpringCloud-Getway网关
    在微服务架构中,一个系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,......
  • SpringCloud 介绍
    SpringCloud是一款基于SpringBoot实现的微服务框架。SpringCloud源自Spring社区,主要由 Pivotal和Netflix两大公司提供技术迭代和维护。随着微服务的火爆流行......
  • SpringCloud-Eureka注册中心
    Eureka一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka是Netflix公司开发的一款开源的服务注册与发现组件。SpringCloud将Eureka与Netflix中的其他开......
  • SpringCloud快速入门及详解
    一、SpringCloud简介 SpringCloud是一种用于构建企业级应用程序的框架,它是基于SpringFramework构建的。SpringCloud通过提供集成的组件来简化微服务应用程序的开发,这......
  • openfeign 请求异常
    在OpenFeign中,如果发生请求异常,是不会走到Decoder的。Decoder主要是用于将HTTP响应体转换为Java对象的,只有在请求成功并且返回了正确的HTTP响应体时才会被调用......
  • 使用Docker 一键部署SpringBoot和SpringCloud项目
    Docker是一个非常流行的容器化技术,可以方便地将应用程序和服务打包成容器并运行在不同的环境中。在本篇博客中,我将向您展示如何使用Docker一键部署SpringBoot和SpringCloud......
  • SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新
    场景SpringCloudConfig分布式配置中心介绍与搭建使用以及ConfigClient实现动态刷新配置:在上面实现ConfigClient动态刷新的机制下,是通过post接口调用ConfigClient的方式去进......
  • SpringCloud中集成Sleuth实现链路追踪
    场景SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例:SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例_霸道......