SpringCloud 服務呼叫 Feign

2021-09-11 18:16:29 字數 2818 閱讀 7069

這節我們來實現下服務呼叫,之前在ribbon中實現的時候,發現呼叫其他的服務還是需要通過resttemplate來呼叫,現在既然所有的服務都註冊到了springcloud中,那麼我們是否有其他的方式呢。

springcloud提供了feign,直接通過服務名稱和對應介面進行呼叫,這樣,就像呼叫專案自己的服務內容一樣

feign是乙個宣告式的web服務客戶端。這使得web服務客戶端的寫入更加方便 要使用feign建立乙個介面並對其進行注釋。它具有可插入注釋支援,包括feign注釋和jax-rs注釋。feign還支援可插拔編碼器和解碼器。spring cloud增加了對spring mvc注釋的支援,並使用spring web中預設使用的httpmessageconverters。spring cloud整合ribbon和eureka以在使用feign時提供負載均衡的http客戶端。

工程依舊是基於之前的工程繼續實現,之前的專案spring eureka實現,spring cloud ribbon實現

在專案中建立新的module,和之前建立專案一樣,只是配置中增加feign

我這邊工程名字是spring-feign-service

對應新增的pom.xml內容是:

org.springframework.cloud

spring-cloud-starter-openfeign

在專案的啟動類上加上註解@enablediscoveryclient加入springcloud eureka服務端,加上註解@enablefeignclients宣告為宣告性rest客戶端:feign

package com.springcloudfeign.feign;

import org.springframework.cloud.client.discovery.enablediscoveryclient;

import org.springframework.cloud.openfeign.enablefeignclients;

@enablediscoveryclient

@enablefeignclients

public static void main(string args)

}

然後建立乙個feigndemoservice的介面:

package com.springcloudfeign.feign.service;

import org.springframework.cloud.openfeign.feignclient;

import org.springframework.web.bind.annotation.requestmethod;

@feignclient(value = "spring-client-01")

public inte***ce feigndemoservice

增加feigncontroller:

package com.springcloudfeign.feign.web;

import com.springcloudfeign.feign.service.feigndemoservice;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.web.bind.annotation.restcontroller;

@restcontroller("/")

public class feigncontroller

}

這裡寫完之後 feigndemoservice下會有紅線提示,但不要緊,可以直接執行。

然後啟動之前的cloud-server,以埠號10001,10002依次啟動spring-client-01服務,啟動ribbon服務,再啟動這個feign服務。我這邊埠號配置的是10010,在postman或者瀏覽器中輸入:

http://localhost:10010/getinfotwo
多刷幾次,可以看到分別呼叫了兩個介面的的spring-client-01服務。

執行的結果和ribbon不同,是依次呼叫兩個埠 

SpringCloud服務間呼叫

springcloud服務間的呼叫有兩種方式 resttemplate和feignclient。不管是什麼方式,他都是通過rest介面呼叫服務的http介面,引數和結果預設都是通過jackson序列化和反序列化。因為spring mvc的restcontroller定義的介面,返回的資料都是通過ja...

Spring Cloud 跨服務呼叫

spring cloud中服務間呼叫有兩種restful呼叫方式,一種是resttemplate 另一種是feign。1 使用loadbalance註解,將resttemplate作為乙個bean配置 component public class resttemplateconfig 2 在cont...

SpringCloud服務間呼叫

springcloud服務間的呼叫有兩種方式 resttemplate和feignclient。不管是什麼方式,他都是通過rest介面呼叫服務的http介面,引數和結果預設都是通過jackson序列化和反序列化。因為spring mvc的restcontroller定義的介面,返回的資料都是通過ja...