SpringCloud- 第九篇 Feign

SpringCloud- 第九篇 Feign

1:Feign是什么

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

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是不支持的

SpringCloud- 第九篇 Feign

原文 

https://segmentfault.com/a/1190000023233300

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » SpringCloud- 第九篇 Feign

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址