亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

SpringCloud- 第九篇 Feign

標簽:
Spring Cloud

1:Feign是什么

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

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是不支持的
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
3
獲贊與收藏
2

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消