1. 程式人生 > >SpringCloud 服務消費者(Feign)(Finchley版本)(三)

SpringCloud 服務消費者(Feign)(Finchley版本)(三)

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。

一、Feign簡介

Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-RS註解。Feign支援可插拔的編碼器和解碼器。Feign預設集成了Ribbon,並和Eureka結合,預設實現了負載均衡的效果。

簡而言之:

  • Feign 採用的是基於介面的註解
  • Feign 整合了ribbon,具有負載均衡的能力
  • 整合了Hystrix,具有熔斷的能力

二、準備工作

繼續用上一節的工程, 啟動eureka-server,埠為8761; 啟動service-hi 兩次,埠分別為8762 、8773.

三、建立一個feign的服務

新建一個spring-boot工程,取名為serice-feign,在它的pom檔案引入Feign的起步依賴spring-cloud-starter-feign、Eureka的起步依賴spring-cloud-starter-netflix-eureka-client、Web的起步依賴spring-boot-starter-web,程式碼如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.forezp</groupId>
	<artifactId>service-feign</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>service-feign</name>
	<description>Demo project for Spring Boot</description>


	<parent>
		<groupId>com.forezp</groupId>
		<artifactId>spring-cloud</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
	</dependencies>

</project>

在工程的配置檔案application.yml檔案,指定程式名為service-feign,埠號為8765,服務註冊地址為http://localhost:8761/eureka/ ,程式碼如下:

## 該服務釋出的埠
server.port=8765

## 注意這裡是作為服務註冊名稱,在eureka註冊中心註冊這個名稱,自動轉化為全大寫,之後呼叫服務用服務名呼叫
spring.application.name=service-feign
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
## 註冊服務中心的配置
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

在程式的啟動類ServiceFeignApplication ,加上@EnableFeignClients註解開啟Feign的功能:

package com.forezp.servicefeign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServiceFeignApplication.class, args);
	}
}

定義一個feign介面,通過@ FeignClient(“服務名”),來指定呼叫哪個服務。比如在程式碼中呼叫了service-hi服務的“/hi”介面,程式碼如下:

package com.forezp.servicefeign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(value = "service-hi")
public interface SchedualServiceHi {

    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);

}

在Web層的controller層,對外暴露一個”/hi”的API介面,通過上面定義的Feign客戶端SchedualServiceHi 來消費服務。程式碼如下:

package com.forezp.servicefeign.controller;

import com.forezp.servicefeign.SchedualServiceHi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HiController {


    //編譯器報錯,無視。 因為這個Bean是在程式啟動的時候注入的,編譯器感知不到,所以報錯。
    @Autowired
    SchedualServiceHi schedualServiceHi;

    @GetMapping(value = "/hi")
    public String sayHi(@RequestParam String name) {
        return schedualServiceHi.sayHiFromClientOne( name );
    }
}

hi forezp,i am from port:8762

hi forezp,i am from port:8763

五、參考資料

本文參考了以下:

相關推薦

SpringCloud 服務消費者Feign(Finchley版本)()

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它

SpringCloud教程 | 第篇: 服務消費者Feign(Finchley版本)

lns efault ret java 服務註冊 star tco target hub 上一篇文章,講述了如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個聲明式的偽Http客戶端

史上最簡單的SpringCloud教程 | 第篇: 服務消費者Feign(Finchley版本)

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解

spring-cloud服務消費者Feign(Finchley版本)

Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-RS註解。Feign支援可插拔的編碼器和解碼器。Feign預設集成了Ribbon,並和Eureka結合,預設實現了負載均衡的效

springcloud 服務消費者Feign錯誤集錦

【前言】 最近在看方誌朋的spingcloud教程,把我遇到的錯誤分享給大家。 【過程】 按照方老師的教程一步步的往下進行之後遇到的第一個錯誤就是@EnableFeignClients註解無法識別,多方查閱部落格 ,大部分人給出的建議都是在pom檔案中新增如下資訊:

SpringCloud--服務消費者Feign

一、Feign簡介 Feign是一個宣告式的web服務客戶端,它使得寫web服務變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,包括Feign 註解和JAX-RS註解。Feign同時支援可插拔的編碼器和解碼器。spring cloud對Sp

SpringCloud: 服務消費者Feign

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。

SpringCloud進擊 | 淺出:服務消費者FeignFinchley版本

1.前言 上一節:SpringCloud進擊 | 二淺出:服務消費者(Ribbon+REST)【Finchley版本】 上一節講述瞭如何通過 Ribbon + RestTemplate 的方式去消費服務,而在實際工作中,我們基本上都是使用 Feign 來完成呼叫。這篇就來說說如何通過

SpringCloud Greenwich版本】第章:服務消費者Feign

一、SpringCloud版本 本文介紹的Springboot版本為2.1.1.RELEASE,SpringCloud版本為Greenwich.RC1,JDK版本為1.8,整合環境為IntelliJ IDEA 二、Feign介紹 Feign是一個宣告式的Web服務客戶端。這使得W

springcloud服務消費者feign

開啟 out nbu 使用 方式 spring cat pan span 本章將繼續講述springcloud的消費者(feign)     Spring Cloud Feign是一套基於Netflix Feign實現的聲明式服務調用客戶端。它使得編寫Web服務客戶端變得更

企業級 SpringCloud 教程 服務消費者Feign

pom https www. ram cat -h 客戶端 tin script 上一篇文章,講述了如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。一、Feign簡介 Feign是一個聲明式的偽Http客戶端,它使得寫

企業分布式微服務SpringCloud SpringBoot mybatis 服務消費者Feign

test 它的 artifact color tor 實現 特性 -- pac 一、Feign簡介 Feign是一個聲明式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要創建一個接口並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-

史上最簡單的SpringCloud教程 | 第篇: 服務消費者Feign

最新Finchley版本請訪問: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f3-feign/ 或者 http://blog.csdn.net/forezp/article/details/810409

在eclipse上部署springcloud小例子--第二篇:服務消費者feign

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用

【轉載】SpringCloud教程 | 第篇: 服務消費者Feign

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個

SpringCloud教程 | 第二篇: 服務消費者Feign

一、Feign簡介Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-RS註解。Feign支援可插拔的編碼器和解碼器。Feign預設集成了Ribbon,並

SpringCloud3服務消費者Feign

上一篇文章,講述瞭如何通過 RestTemplate+Ribbon 去消費服務,這篇文章主要講述如何通過Feign去消費服務。 1.Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign

史上最簡單的SpringCloud教程 | 第篇: 服務消費者Feign

上一篇文章,講述了通過restTemplate+ribbon去消費服務,這篇文章主要講述通過feign去消費服務。 一、Feign簡介 Feign是一個宣告式的web服務客戶端,它使得寫web服務變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註

SpringCloud入門3:服務消費者Feign

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具

SpringCloud | 第篇: 服務消費者Feign

上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有