14 Feign元件入門案例

2021-10-04 09:35:12 字數 2209 閱讀 1356

前言:前面我們使用的resttemplate實現rest api呼叫,**大致如下:

("/buy/"

)public product order()

由**可知,我們是使用拼接字串的方式構造url的,該url只有乙個引數。但是,在現實中,url 中往往含有多個引數。這時候我們如果還用這種方式構造url,那麼就會非常痛苦。那應該如何解決?

解釋:feign是netflix開發的宣告式,模板化的http客戶端,其靈感來自retrofit,jaxrs-2.0以及websocket.

1、feign可幫助我們更加便捷,優雅的呼叫http api。

2、在springcloud中,使用feign非常簡單——建立乙個介面,並在介面上新增一些註解,**就完成了。

3、feign支援多種註解,例如feign自帶的註解或者jax-rs註解等。

4、springcloud對feign進行了增強,使feign支援了springmvc註解,並整合了ribbon和eureka, 從而讓feign的使用更加方便。

(1)引入依賴

在服務消費者 order_service 新增fegin依賴

<

!--springcloud整合的openfeign--

>

org.springframework.cloud<

/groupid>

spring-cloud-starter-openfeign<

/artifactid>

<

/dependency>

(2)啟動類新增feign的支援通過@enablefeignclients註解開啟spring cloud feign的支援功能

@entityscan

("cn.itcast.order.entity"

)//啟用feign

@enablefeignclients

public

class

}(3)宣告被呼叫的微服務介面,介面類啟用feignclient

建立乙個feign介面,此介面是在feign中呼叫微服務的核心介面

在服務消費者 order_service 新增乙個 productfeginclient 介面

/**

* 宣告需要呼叫的微服務名稱

* @feignclient

* * name : 服務提供者的名稱

*/@feignclient

(name=

"service-product"

)public

inte***ce

productfeignclient

",method = requestmethod.get)

public product findbyid

(@pathvariable

("id"

) long id)

;}

1、定義各引數繫結時,@pathvariable、@requestparam、@requestheader等可以指定引數屬 性,在feign中繫結引數必須通過value屬性來指明具體的引數名,不然會丟擲異常

2、@feignclient:註解通過name指定需要呼叫的微服務的名稱,用於建立ribbon的負載均衡器。 所以ribbon會把 shop-service-product 解析為註冊中心的服務。

(4)修改服務呼叫者order_service的呼叫方式

修改 ordercontroller ,新增productfeginclient的自動注入,並在order方法中使用productfeginclient介面類完成微服務呼叫

@restcontroller

("/order"

)public

class

ordercontroller

",method = requestmethod.get)

public product findbyid

(@pathvariable long id)

}

(5)測試效果請求介面:

呼叫元件Feign

有服務消費方呼叫提供方,之前採用的是resttemplate。1 在pom.xml中引入openfeign的啟動器 org.springframework.cloud spring cloud starter openfeign feign hystrix enabled true 開啟feign的...

四 Spring Cloud 的 Feign 元件

org.springframework.cloud spring cloud starter feign 注意 feignclient註解中的cloud service為eureka註冊的服務名。原理 在eureka註冊的cloud service工程中,也有乙個controller有相同的find...

springCloud元件2FEIGN使用

springcloud的服務大哥 feign元件 每乙個服務之間的呼叫度必須需要通過feign這個大哥來發現和分配任務 feign元件的註冊宣告 feignclient 通過這個註解來宣告使用feign元件進行服務呼叫 前台是需要有乙個eureka或zookeep等作為乙個服務註冊中心 feign元...