1. 程式人生 > >springcloud 系列教程四:服務消費者(Feign)

springcloud 系列教程四:服務消費者(Feign)

一、Feign簡介


Feign 的英文表意為 "假裝,偽裝,變形", 是一個http請求呼叫的輕量級框架,可以以介面註解的方式發起 Http 請求,而不用像 httpclient 通過封裝 HTTP 請求報文的方式呼叫。Feign 通過處理註解,將請求模板化,當實際呼叫的時候,傳入引數,根據引數再應用到請求上,進而轉化成真正的請求,這種請求相對而言比較直觀。Feign被廣泛應用在Spring Cloud 的解決方案中,是學習基於Spring Cloud 微服務架構不可或缺的重要元件。

並且 Feign 預設集成了 Ribbon,並和 Eureka 結合,實現了負載均衡的效果。

二、開發步驟


1. pom 配置

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bdqn</groupId>
    <artifactId>springcloud-feign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-feign</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2. application.yml 配置

#服務地址
server:
  port: 8104
#應用名稱
spring:
  application:
    name: springcloud-feign
#註冊中心地址
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8100/eureka
    register-with-eureka: true
    fetch-registry: true

3. 建立介面

@FeignClient("springcloud-emp")
public interface EmpServiceApi {

    @RequestMapping("/empinfo")
    String getUserInfo();
}

springcloud-emp為要呼叫的服務名

4. 控制層 controller

@RestController
public class EmpController {

    @Autowired
    EmpServiceApi service;

    @RequestMapping("/test")
    public String test(){
        String msg = service.getUserInfo();
        return  msg;
    }

}

5. 啟動類

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class SpringcloudFeignApplication {

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

}

6. 測試

啟動註冊中心,springcloud-emp 服務和 feign 客戶端,首先檢視註冊中心:

springcloud-emp 服務多開,模擬叢集,然後我們通過 feign 客戶端呼叫,可以發現內建負載均衡:

相關推薦

springcloud 系列教程服務消費者Feign

一、Feign簡介 Feign 的英文表意為 "假裝,偽裝,變形", 是一個http請求呼叫的輕量級框架,可

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

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

SpringCloud進擊 | 三淺出服務消費者Feign【Finchley版本】

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

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

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

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

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

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

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

SpringCloud入門3服務消費者Feign

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

SpringCloud Greenwich版本】第服務消費者ribbon

一、SpringCloud版本 本文介紹的Springboot版本為2.1.1.RELEASE,SpringCloud版本為Greenwich.RC1,JDK版本為1.8,整合環境為IntelliJ IDEA 二、Ribbon介紹 Ribbon是一個客戶端負載均衡器,它可以很好地

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

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

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

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

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

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

SpringCloud服務消費Feign

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

Spring Cloud之路 服務消費者Feign

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

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

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

SpringCloud 第三篇 服務消費者Ribbon / Feign

        前面的文章學習了服務的註冊和發現。在微服務架構中,業務都會被拆分成一個獨立的服務,服務與服務的通訊是基於http restful的。Spring cloud有兩種服務呼叫方式,一種是ribbon+restTemplate,另一種是feign。在這一篇文章要學習

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

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

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

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

springcloud服務消費者feign

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

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

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

springcloud 服務消費者Feign錯誤集錦

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