SpringCloudFeign配置應用詳細介紹_第1頁
SpringCloudFeign配置應用詳細介紹_第2頁
SpringCloudFeign配置應用詳細介紹_第3頁
SpringCloudFeign配置應用詳細介紹_第4頁
SpringCloudFeign配置應用詳細介紹_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第SpringCloudFeign配置應用詳細介紹目錄前言1、Feign簡介2、Feign配置應用

前言

服務消費者調用服務提供者的時候使用RestTemplate技術

存在不便之處:

拼接urlrestTmplate.getForObJect

這兩處代碼都比較模板化,能不能不讓我我們來寫這種模板化的東西,另外來說,拼接url非常的low,拼接字符串,拼接參數(shù),很low還容易出錯

1、Feign簡介

Feign是Netflix開發(fā)的一個輕量級RESTful的HTTP服務客戶端(用它來發(fā)起請求,遠程調用的),是以Java接口注解的方式調用Http請求,而不用像Java中通過封裝HTTP請求報文的方式直接調用,F(xiàn)eign被?泛應用在SpringCloud的解決方案中。

類似于Dubbo,服務消費者拿到服務提供者的接口,然后像調用本地接口方法一樣去調用,實際發(fā)出的是遠程的請求。

Feign可幫助我們更加便捷,優(yōu)雅的調用HTTPAPI:不需要我們去拼接url然后呢調用restTemplate的api,在SpringCloud中,使用Feign?常簡單,創(chuàng)建一個接口(在消費者--服務調用方這一端),并在接口上添加一些注解,代碼就完成了SpringCloud對Feign進行了增強,使Feign支持了SpringMVC注解(OpenFeign)

本質:封裝了Http調用流程,更符合面向接口化的編程習慣,類似于Dubbo的服務調用

2、Feign配置應用

在服務調用者工程(消費)創(chuàng)建接口(添加注解)(效果)Feign=RestTemplate+Ribbon+Hystrix

服務消費者工程(自動投遞微服務)中引入Feign依賴(或者父類工程)

dependencies

dependency

groupIdorg.springframework.cloud/groupId

artifactIdspring-cloud-starter-netflix-eureka-client/artifactId

/dependency

dependency

groupIdorg.springframework.cloud/groupId

artifactIdspring-cloud-starter-openfeign/artifactId

/dependency

/dependencies

服務消費者工程(自動投遞微服務)啟動類使用注解@EnableFeignClients添加Feign支持

package;

importorg.springframework.boot.SpringApplication;

importorg.springframework.boot.autoconfigure.SpringBootApplication;

importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;

importorg.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients//開啟Feign客戶端功能

publicclassAutoDeliverApplication8091{

publicstaticvoidmain(String[]args){

SpringApplication.run(AutoDeliverApplication8091.class,args);

}

注意:此時去掉Hystrix熔斷的支持注解@EnableCircuitBreaker即可包括引入的依賴,因為Feign會自動引入。

配置文件

server:

port:8091

eureka:

client:

service-url:

defaultZone:http://LagouCloudEurekaServerB:8762/eureka,http://LagouCloudEurekaServerA:8761/eureka

instance:

prefer-ip-address:true#服務實例中顯示ip,而不是顯示主機名(兼容老的Eureka版本)

instance-id:${spring.cloud.client.ipaddress}:${}:${server.port}:@project.version@

spring:

application:

name:lagou-service-autodeliver

lagou-service-resume:

ribbon:

NFLoadBalancerRuleClassName:flix.loadbalancer.RoundRobinRule#負載策略調整

management:

endpoints:

web:

exposure:

include:*

endpoint:

health:

show-details:always

創(chuàng)建Feign接口

package.controller.service;

importorg.springframework.cloud.openfeign.FeignClient;

importorg.springframework.web.bind.annotation.GetMapping;

importorg.springframework.web.bind.annotation.PathVariable;

importorg.springframework.web.bind.annotation.RequestMapping;

//@FeignClient標明當前類是一個Feign客戶端,value指定該客戶端要請求的服務器名稱(登記到注冊中心上服務提供者的服務名稱)

//name或value:調?的服務名稱,和服務提供者yml?件中保持?致

@FeignClient(value="lagou-service-resume")

@RequestMapping("/resume")

publicinterfaceResumeServiceFeignClient{

//feign要做的事情,拼裝url發(fā)起請求

//我們調用該方法就是調用本地接口方法,那么實際上做的事遠程請求

@GetMapping("/openstate/{userId}")

publicIntegerfindDefaultResumeState(@PathVariableLonguserId);

}

注意:

@FeignClient注解的name屬性用于指定要調用的服務提供者名稱,和服務提供者yml?件中保持一致接口中的接口方法,就好比是遠程服務提供者Controller中的Hander方法(只不過如同本地調用了),那么在進行參數(shù)綁定的時,可以使用@PathVariable、@RequestParam、RequestHeader等,這也是OpenFeign對SpringMVC注解的支持,但是需要注意value必須設置,否則會拋出異常

使用接口中方法完成遠程調用(注入接口即可,實際注入的是接口的實現(xiàn))

package.controller;

import.controller.service.ResumeServiceFeignClient;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.web.bind.annotation.GetMapping;

importorg.springframework.web.bind.annotation.PathVariable;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("/autodeliver")

publicclassAutoDeliverController{

@Autowired

privateResumeServiceFeignClientresumeServiceFeignClient;

@GetMapping("/checkS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論