前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集成Ribbon的客户端调用工具——Feign

集成Ribbon的客户端调用工具——Feign

作者头像
Noneplus
发布2019-09-24 16:06:36
4200
发布2019-09-24 16:06:36
举报
文章被收录于专栏:开发笔记开发笔记

什么是Feign?

客户端调用工具

  • Ribbon+RestTemplate
  • Feign

Feign特性:

  • Feign本身包含Ribbon
  • Fegin是一个采用基于接口的注解的声明式客户端调用工具,更加简便

基于上个环境来做一些改造:

https://github.com/HCJ-shadow/Ribbon

创建msc-consumer-feign-80工程

1566209972903
1566209972903

pom依赖

主要是spring-cloud-starter-openfeign

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>

<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-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <!--        Eureka客户端启动需要依赖web模块-->
    <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>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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

定义service接口

package zkrun.top.service;

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

@FeignClient("msc-provider")    //@FeignClient("服务名")
public interface FeignService {


    @RequestMapping(value = "/info/get")
    public String request();

}

定义Controller调用Service接口

package zkrun.top.controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import zkrun.top.service.FeignService;

@RestController
public class FeignController {

    @Autowired
    FeignService feignService;

    @RequestMapping(value = "/feign/info/get")
    public String request()
    {
       return this.feignService.request();
    }

}

主启动类

package zkrun.top;

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

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class App_Consumer_Feign_80
{
   public static void main(String[] args)
   {
      SpringApplication.run(App_Consumer_Feign_80.class, args);
   }
}

application.yaml

server:
  port: 80

eureka:
  client:
    service-url:
      defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/,http://eureka6003.com:6003/eureka/

spring:
  application:
    name: feign-consumer

运行测试

1566214053155
1566214053155

集成了轮询效果。


小结:

  • Feign的调用逻辑,访问Controller定义的路径,调用feignService.request()方法,而service接口层中定义了服务名和服务请求路径,最后通过服务名和请求路径实现对服务提供者的调用。
  • Feign的接口在实际开发中经常抽取出一个单独模块,以便复用。

代码参考:https://github.com/HCJ-shadow/Feign

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Feign?
  • 创建msc-consumer-feign-80工程
  • pom依赖
  • 定义service接口
  • 定义Controller调用Service接口
  • 主启动类
  • application.yaml
  • 运行测试
  • 小结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档