Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。

声明式REST客户端:Feign

  创建一个maven工程eureka_feign_client,pom文件如下:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.4..RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>
  7. <properties>
  8. <project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
  9. <java.version>1.8</java.version>
  10. </properties>
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.springframework.cloud</groupId>
  14. <artifactId>spring-cloud-starter-feign</artifactId>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.cloud</groupId>
  18. <artifactId>spring-cloud-starter-eureka</artifactId>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. </dependencies>
  30. <dependencyManagement>
  31. <dependencies>
  32. <dependency>
  33. <groupId>org.springframework.cloud</groupId>
  34. <artifactId>spring-cloud-dependencies</artifactId>
  35. <version>Brixton.SR5</version>
  36. <type>pom</type>
  37. <scope>import</scope>
  38. </dependency>
  39. </dependencies>
  40. </dependencyManagement>

   在应用主类中通过@EnableFeignClients注解开启Feign功能,启动文件FeignApplication.java如下:

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. @EnableFeignClients
  4. public class FeignApplication {
  5.  
  6. public static void main(String[] args) {
  7. SpringApplication.run(FeignApplication.class, args);
  8. }
  9.  
  10. }

  定义服务接口类UserClient.java,使用@FeignClient("service01")注解来绑定该接口对应service01服务

  1. @FeignClient("service01")
  2. public interface UserClient {
  3.  
  4. @RequestMapping(method = RequestMethod.GET, value = "/getuser")
  5. public User getuserinfo();
  6.  
  7. @RequestMapping(method = RequestMethod.GET, value = "/getuser")
  8. public String getuserinfostr();
  9.  
  10. @RequestMapping(method = RequestMethod.GET, value = "/info")
  11. public String info();
  12.  
  13. }

  在web层中调用上面定义的UserClient,具体如下

  1. @RestController
  2. public class UserController {
  3.  
  4. @Autowired
  5. UserClient userClient;
  6.  
  7. @RequestMapping(value = "/getuserinfo", method = RequestMethod.GET)
  8. public User getuserinfo() {
  9. return userClient.getuserinfo();
  10. }
  11.  
  12. @RequestMapping(value = "/getuserinfostr", method = RequestMethod.GET)
  13. public String getuserinfostr() {
  14. return userClient.getuserinfostr();
  15. }
  16.  
  17. @RequestMapping(value = "/info", method = RequestMethod.GET)
  18. public String info() {
  19. return userClient.info();
  20. }
  21.  
  22. }

  其实通过Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法,类似Dubbo中暴露远程服务的方式,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端。

SpringCloud之Fegin的更多相关文章

  1. SpringCloud 之 Fegin —— 发送GET、POST请求以及文件上传

    由于项目需要调用其他微服务的数据,首先想到的就是写一个http网络请求的工具类,但是想到在之前看springCloud的时候里面有这个Fegin可以实现,就顺便实践一下,虽然过程有点坎坷,好在都顺利解 ...

  2. SpringCloud之Fegin学习笔记

    以下部分内容来源于网络摘抄~ 1.作用 Feign 是一种声明式.模板化的 HTTP 客户端.在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方 ...

  3. SpringCloud Fegin超时重试源码

    springCloud中最重要的就是微服务之间的调用,因为网络延迟或者调用超时会直接导致程序异常,因此超时的配置及处理就至关重要. 在开发过程中被调用的微服务打断点发现会又多次重试的情况,测试环境有的 ...

  4. springcloud中servcie层调用fegin异常以及异步方法的实现

    近日在做业务上的短信推送和APP消息推送,通过调用别的模块的接口来实现,在springcloud中通过fegin进行调用.这里要说明的事情并不是如何开发推送功能,而是在调试过程中碰到的一些小问题.我把 ...

  5. 「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  6. 【SpringCloud技术专题】「原生态Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

    前提介绍 Feign是SpringCloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用. 由于遗留原因,某些项目中,整个系统并不是SpringCloud项目,甚至不是Spri ...

  7. springcloud第七步:fegin客户端调用工具

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

  8. SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)

    前言 本篇主要介绍的是SpringCloud中的断路器(Hystrix)和断路器指标看板(Dashboard)的相关使用知识. SpringCloud Hystrix Hystrix 介绍 Netfl ...

  9. SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解

    前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...

随机推荐

  1. VMware设置inter共享连接出现空值

    1.打开“网络和共享中心”选择“VMware Virtual Ethernet Adapter for VMnet8”网卡右键属性,选择VMware Bridge Protocol,同时设置ip自动获 ...

  2. js保存,获取,删除cookie的操作

    [转]来自:http://blog.csdn.net/itmyhome1990/article/details/7363816 JSP表单页面 <form action="login& ...

  3. Lagrange 乘子法求最优解

    clc clear syms x y z r1 r2 w f=x^+y^+z^+w^; g1=*x-y+z-w-; g2=x+y-z+w-; h=f-r1*g1 -r2*g2; hx=diff(h,x ...

  4. python3.4连接mysql5.7数据库增删改查

    #!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "blzhu" """ pyt ...

  5. 怎么通过tomcat的catalina.out查看日志

    进入tomcat的logs目录下:cd apache-tomcat/logs/ 查看logs下的文件和目录:ll   可以找到catalina.out文件: 实时查看日志: tail -fn 100 ...

  6. IntelliJ IDEA 2017版 spring-boot 2.03 去除控制台logo;去除springboot 图标;去除springboot 图

    1.控制台出现logo图标 2.如果不喜欢,如何去除这个logo 在其Application中进行设置 package com.springboot.logo; import org.springfr ...

  7. Jquery 单击_双击_鼠标经过_鼠标离开_背景样式变化

    列表页点击.鼠标经过离开背景变化 <script type="text/javascript"> $(function () { $("table tr&qu ...

  8. 自己写一个chrome扩展程序 - 右键菜单扩展

    最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...

  9. TypeError: c is null

    找到相应的js报错地方..添加判断条件 if(styles == null) {     return ''; }

  10. js 判断字符串中是否包含某个字符串(转载)

    from : https://www.cnblogs.com/ooo0/p/7741651.html String对象的方法 方法一: indexOf()   (推荐) var str = " ...