Spring Cloud Feign简介

Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的Web服务客户端定义方式。使用它可以进行服务的消费,但是它的客户端负载平衡仍是通过Ribbon实现的

使用Spring Cloud Feign

创建一个SpringBoot工程,作为服务调用方

1.pom.xml

org.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-eurekaorg.springframework.cloudspring-cloud-starter-feignorg.springframework.bootspring-boot-starter-testtest

spring-cloud-starter-feign加入了feign的依赖

2.启动类

@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class FeignConsumerApplication { public static void main(String[] args) { SpringApplication.run(FeignConsumerApplication.class, args); } }

@EnableFeignClients:开启Spring Cloud Feign的支持功能

3.服务层

@FeignClient("hello-service") public interface HelloService { @RequestMapping(value = "/hello", method = RequestMethod.GET) String hello(); }

@FeignClient(“hello-service”):制定服务名来绑定服务

注:服务名不区分大小写

@RequestMapping:指定调用服务中的具体方法

4.Controller层

@Controller public class ConsumerController { @Autowired private HelloService helloService; @RequestMapping(value = "/feign-consumer", method = RequestMethod.GET) @ResponseBody public String helloConsumer() { return helloService.hello(); } }

在方法中调用这个绑定了hello-service服务接口的客户端向该服务发起/hello接口的调用

5.配置类

server.port=9001 spring.application.name=feign-consumer eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

启动程序以后,在浏览器中输入http://localhost:9001/feign-consumer出现下图:

- 提升使用,带参数的请求在具体业务中的接口会比之前程序的复杂得多,这里介绍一下Feign对集中不同形式参数的绑定方法。有@RequestParam、@RequestHeader、@RequestBody

1.改造服务提供类的Service层,添加几个方法

@RequestMapping(value = "/hello1", method = RequestMethod.GET) @ResponseBody public String hello(@RequestParam String name) { return "hello " + name; } @RequestMapping(value = "/hello2", method = RequestMethod.GET) @ResponseBody public User hello(@RequestHeader String name, @RequestHeader Integer age) { return new User(name, age); } @RequestMapping(value = "/hello3", method = RequestMethod.POST) @ResponseBody public String hello(@RequestBody User user) { return "Hello " + user.getName() + ", " + user.getAge(); }

2.添加一个javabean

public class User { private String name; private Integer age; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + ''' + ", age=" + age + '}'; } }

3.修改服务调用类的接口

@RequestMapping(value = "/hello1", method = RequestMethod.GET) String hello(@RequestParam("name") String name); @RequestMapping(value = "/hello2", method = RequestMethod.GET) User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age); @RequestMapping(value = "/hello3", method = RequestMethod.POST) String hello(@RequestBody User user);

这里在定义各参数绑定时@RequestParam、@RequestHeader等可以指定参数名称的注解,但它们的value不能少,否则会报错,这和SpringMVC中有一点不同

4.在服务调用类Controller层添加一个测试的接口

@RequestMapping(value = "/feign-consumer2", method = RequestMethod.GET) @ResponseBody public String helloConsumer2() { String s2 = helloService.hello("dayday"); return s2; }

启动以后访问浏览器:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持华域联盟。

feign调用多个服务_SpringCloud使用Feign实现服务调用|chu相关推荐

  1. feign调用多个服务_SpringCloud中Feign服务调用请求方式及参数总结(示例代码)

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  2. feign调用多个服务_SpringCloud Feign 服务调用的实现

    前言 前面我们已经实现了服务的注册与发现(请戳:SpringCloud系列--Eureka 服务注册与发现),并且在注册中心注册了一个服务myspringboot,本文记录多个服务之间使用Feign调 ...

  3. feign直接走熔断_SpringCloud基于OpenFeign实现服务熔断降级

    在Spring Cloud微服务架构中,往往不同的业务模块或者不同的业务功能被抽象成独立的微服务,这样存在以下几点优势: 业务拆分后,每个微服务相对独立,对整个系统的架构容易理解: 每个微服务功能简单 ...

  4. SpringCloud微服务之间使用Feign调用不通情况举例

    文章目录 摘要 情景1.远程调用失败 原因1:子项目接口没调通 -> 可能是配置文件名字/地址有问题(name或者url) 原因2:测试本地子项目没有启动,导致无法调用接口 原因3:Feign里 ...

  5. SpringCloud Alibaba微服务实战(三) - Nacos服务创建消费者(Feign)

    什么是Feign Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单.使用 Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用 Feign 注解和 ...

  6. 企业分布式微服务云SpringCloud SpringBoot mybatis - 服务消费者(Feign)

    一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注 ...

  7. controller调用controller的方法_SpringCloud Alibaba微服务实战三 - 服务调用

    导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...

  8. Spring Cloud【Finchley】-06服务消费者整合Feign

    文章目录 概述 实例 新建工程 增加maven依赖 创建一个Feign接口,并添加@FeignClient注解 修改Controller层,将RestTemplate改为调用Feign接口 启动类增加 ...

  9. Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】

    Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...

最新文章

  1. iOS 自定义UITabBar
  2. 一个由跨平台产生的浮点数bug | 有你意想不到的结果
  3. ABAP 如何实现屏幕字段不可输入
  4. uc3842开关电源电路图_UC3842 的原理及应用详解 (上)
  5. Lync Server 2010标准版系列PART3:证书准备
  6. android alpha java_Android support 26.0.0-alpha1 产生的问题(zz)
  7. WindowsXP 系统登陆原理及其验证机制概述
  8. 怎么访问原生php类,关于如何利用php的原生类进行XSS
  9. easypanel安装php5.4,kangle一键脚本-凌梦云
  10. React antD 使用Select 进阶功能 远程搜索,防抖控制,加载状态
  11. 网站漏洞渗透检测过程与修复方案
  12. 面向对象编程(三)——程序执行过程中内存分析
  13. 泛微e9隐藏明细表_泛微e-cology的Ecode二次开发无侵入定制说明
  14. 大气压随温度变化表_空气密度随温度的变化
  15. iPS细胞技术难点以及iPS相关实验材料
  16. 安卓 Day 23 :利用视图翻页器实现引导项
  17. 碰到ConvergenceWarning的情况
  18. 华为存储FusionStorage(备份②)
  19. 笔记:论文阅读 Enriched Feature Guided Refinement Network for Object Detection
  20. SQL Server中字段、记录、表、列、行、属性、元组、主键、外键的含义

热门文章

  1. 底层I/O性能大PK:Python/Java被碾压,Rust有望取代C++
  2. 硬刚 Kafka,Apache 顶级项目背后的公司完成数百万美元 Pre-A 轮融资
  3. Go 语言之 defer 的前世今生
  4. 2020年,5 种 将死的编程语言!
  5. 腾讯云开发者大会 | 腾讯云大学首次与业界顶尖厂商合作的线上学习专区重磅发布...
  6. 158 行 Python 代码,复现 DeepMind 递归神经网络 DRAW!
  7. 拼多多协助广东警方打击网络黑灰产 15名嫌疑人于近日落网
  8. 高性能访客记录系统如何设计?
  9. Java 程序员最爱 Kotlin?
  10. 12306再曝漏洞,一张身份证可买两张相同火车票