Spring Cloud Feign的原理及基本使用
- 了解Feign的作用
- 掌握Feign的使用过程
- 掌握Feign的负载均衡配置
- 掌握Feign的熔断配置
- 掌握Feign的压缩配置
- 掌握Feign的日志配置
一、 Feign简介
Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。不再需要拼接URL,参数等操作。项目主页:https://github.com/OpenFeign/feign 。
- 集成Ribbon的负载均衡功能
- 集成了Hystrix的熔断器功能
- 支持请求压缩
- 大大简化了远程调用的代码,同时功能还增强啦
- Feign以更加优雅的方式编写远程调用代码,并简化重复代码
总结:
- feign 是一个[声明式]REST客户端。(http客户端:RestTemplate 使用Restful 风格进行开发的)
- feign 是基于RestTemplate开发的一个声明式的Rest客户端;只需要写一个接口,定义一个注解,就可以直接使用。
二、Feign的快速入门
使用Feign替代RestTemplate发送Rest请求。
2.1 使用feign的步骤
- consumer中添加起步依赖(spring-cloud-starter-openfeign)
- consumer中编写一个接口, 添加一个注解进行声明@FeignClient,注解后面的name 指定的是要发送到哪个微服务对应的名字。最后定义一个方法。
- consumer中编写控制层,在Controller中使用@Autowired注入FeignClient。(在controller service dao里面都可以使用)
- consumer中在启动类中添加@EnableFeignClients,开启Feign。
- provider中被调用方controller 一定要【实现】声明的接口的方法。
(1)导入依赖
在user-consumer中添加spring-cloud-starter-openfeign依赖
<!--配置feign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
(2)创建Feign客户端(接口)
在user-consumer中创建com.it.feign.UserClient接口,添加一个注解进行声明@FeignClient,定义一个方法。
//name 指定的是要发送到哪个微服务对应的名字
@FeignClient(name = "user-provider",fallback = UserClientFallback.class)
/*@RequestMapping("/user")*/
public interface UserClient {/*** 实际上是发送请求给微服务 获取数据的* @param id* @return*/@RequestMapping("/user/find/{id}")public User findById(@PathVariable(name = "id") Integer id);
}
解释:
- Feign会通过动态代理,帮我们生成实现类。
- 注解@FeignClient声明Feign的客户端,注解value指明服务名称
- 接口定义的方法,采用SpringMVC的注解。Feign会根据注解帮我们生成URL地址
- 注解@RequestMapping中的/user,不要忘记。因为Feign需要拼接可访问地址
(3)编写控制层
在user-consumer中: 创建com.it.controller.ConsumerFeignController,在Controller中使用@Autowired注入FeignClient,代码如下:
@RestController
@RequestMapping("/feign")
public class ConsumerFeignController {@Autowiredprivate UserClient userClient;//根据ID获取用户的数据(要使用feign的方式来获取)@RequestMapping(value = "/{id}")public User findById(@PathVariable(name = "id") Integer id){return userClient.findById(id);}
}
(4)在user-provider的controller 一定要【实现】声明的接口的方法。
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User findById(@PathVariable Integer id){System.out.println("这个是18081==================================");return userService.findById(id);}//provider接受这个请求@GetMapping("/find/{id}")public User find(@PathVariable Integer id){System.out.println("这个是18081==================================");return userService.findById(id);}
}
(5)在启动类中开启Feign
在user-consumer的启动类中添加@EnableFeignClients,开启Feign。
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
@EnableFeignClients//开启feign
public class UserConsumerApplication {public static void main(String[] args) {SpringApplication.run(UserConsumerApplication.class,args);}@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}@Beanpublic Logger.Level feignLoggerLevel(){//设置feign调用的级别是 Fullreturn Logger.Level.FULL;}
}
(6)测试
请求<http://localhost:18082/feign/2>
,效果如下:
Spring Cloud Feign的原理及基本使用相关推荐
- Spring Cloud Feign设计原理
点击关注,快速进阶高级架构师 作者:亦山札记 什么是Feign? Feign 的英文表意为"假装,伪装,变形", 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调 ...
- Spring Cloud Feign原理详解
目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...
- Spring Cloud Feign原理
Spring Cloud Feign原理 Feign运行过程 重试机制 服务降级 负载均衡 隔舱原理 Feign运行过程 通过主类上的EnableFeignClients 注解开启FeignClien ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
- Spring Cloud Feign - 内部实现细节
1. 概述 Feign用于服务间调用,它的内部实现是一个包含Ribbon(负载均衡)的JDK-HttpURLConnection(Http)调用.虽然调用形式是类似于RPC,但是实际调用是Http,这 ...
- Spring Cloud Feign 请求压缩 、Feign的日志级别配置
一.Spring Cloud Feign 请求压缩 #开启压缩compression:request:enabled: true # 开启请求压缩#最小触发压缩的大小min-request-size: ...
- Spring Cloud Feign 1(声明式服务调用Feign 简介)
Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...
- Spring Cloud Feign 请求时附带请求头
Spring Cloud Feign 请求时附带请求头 问题描述 解决方案 FeignConfiguration 使用 配置修改 问题描述 Feign 在请求时是不会将 request 的请求头带着请 ...
- Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign
一.客户端负载均衡:Spring Cloud Ribbon. Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的.通过Spring ...
最新文章
- Java基础学习总结(20)——基础语法
- 【转】如何在忘记CentOS的root密码的情况下修改root密码。
- 微服务接口限流的设计与思考(附GitHub框架源码)
- 利用binlog进行数据库的还原
- iphone字体_iOS 13终于能换花式字体了?!发在朋友圈里真的超好看!
- 打印SAP ABAP web service call完整的payload
- Highcharts图表-ajax-获取json数据生成图表
- Mac/Linux系统连接远端服务器以及相同IP地址的服务器账号密码重置,ssh失败问题
- 数学和物理的共同演化
- select、poll与epoll的优缺点
- python 构建来源gis_Python语言在ArcGIS环境中的应用.pptx
- java必会单词_java必会的英语单词
- echarts热力背景图_echarts自定义背景图片
- 【100%通过率 】华为OD真题c++/java/python【完美走位】【 2022 Q4 | 100分】
- windows CMD批处理中的一些特殊连接符号
- 如何放大图片,教您三种方法!
- linux发行版中的i386/i686/x86-64/有什么区别?
- 软件项目经理需要了解的法律法规
- 工业界推荐_Industrial RS(4)
- Kubernetes PV和PVC 常见问题