一、什么是Feign

  1. Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。
  2. Feign被广泛应用在Spring Cloud 的解决方案中,是学习基于Spring Cloud 微服务架构不可或缺的重要组件。
  3. Feign具有可插拔的注解特性,可使用Feign注解和JAX-RS注解。
  4. Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

二、下面来看看具体实现

首先创建Feign模块,cloud-demo-feign

下面是项目结构

pom文件如下

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hewl</groupId><artifactId>cloud-demo-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>cloud-demo-feign</artifactId><name>cloud-demo-feign</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><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></dependency></dependencies>
</project>
复制代码

application.yml文件如下

server:port: 8811 # 你的端口
spring:application:name: feign
eureka:client:service-url:defaultZone: http://admin:admin@server1:8761/eureka/,http://admin:admin@server2:8762/eureka/
复制代码

启动类内容如下,加上@EnableFeignClients注解开启Feign的功能

package com.hewl;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
@EnableEurekaClient
@EnableFeignClients
public class FeignApplication {public static void main(String[] args) {SpringApplication.run(FeignApplication.class, args);}
}
复制代码

定义Feign接口,SchedualCilentName

package com.hewl.feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient(value="service-eureka-client")
public interface SchedualCilentName {@GetMapping(value = "/test")public String testFromClientOne(@RequestParam("name") String name);}
复制代码

定义对外的controller

package com.hewl.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import com.hewl.feign.SchedualCilentName;@RestController
public class TestController {@Autowiredpublic SchedualCilentName schedualCilentName;@GetMapping(value="/test")public String test (String name) {return schedualCilentName.testFromClientOne(name);}
}复制代码

按顺序启动项目

  1. 启动eureka-server
  2. 修改端口分别启动两次eureka-client
  3. 启动feign客户端

访问localhost:8811/test?name=张三,访问成功并且已经成功启动负载均衡

转载于:https://juejin.im/post/5d01e679f265da1b5f265021

Eclipse(STS) 初次搭建Spring Cloud项目之声明式REST调用+负载均衡实现Feign(四)相关推荐

  1. Eclipse(STS) 初次搭建Spring Cloud项目之断路器Hystrix(五)

    在微服务架构中,根据业务来拆分成一个个的服务,在SpringCloud中用RestTemplate+Ribbon和Feign来实现互相调用.为了保证其高可用,单个服务通常会集群部署. 由于网络原因或者 ...

  2. 告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目(实际项目开发的浓缩精华版)

    告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目 一.前言 二.如何选择版本 2.1 SpringCloud 和 Spring Boot 版本选型 2.1. ...

  3. 自己动手,使用Spring Initializr从零开始搭建Spring Cloud项目

    新建Project 这里使用的开发工具是IDEA,JDK版本1.8. 打开IDEA开发工具,File -> New -> Project 然后一步步往下设置,然后到这一步,选择Spring ...

  4. 微服务(三) 【手摸手带你搭建Spring Cloud】 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡?ribbon负载均衡有几种策略?Ribbon是什么?

    在上一章,我介绍了springcloud的eureka搭建.我们做了服务注册.最后我们还介绍了一些续约,失效剔除等参数配置.已经不需要再通过手动输入ip去访问服务,而是通过中心只需要通过服务名就可以获 ...

  5. 用idea搭建一个Spring Cloud项目(含代码)

    目录 目标 相关术语介绍 实战 搭建父工程(聚合工程) 搭建注册中心微服务 搭建生产者和消费者微服务 新增Eureka用户认证 新增健康检测 手动维护注册列表 剔除微服务 up微服务 down微服务 ...

  6. Spring boot(6)---在Eclipse中搭建Spring boot 项目

    Spring boot入门:在Eclipse中搭建Spring boot 项目 Eclipse中的STS插件 打开Eclipse-Help-Eclipse Marketplace-popular 下载 ...

  7. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  8. 从0到1手把手搭建spring cloud alibaba 微服务大型应用框架(十五) swagger篇 : gateway 集成swagger 与 knife4j实现在线api文档并嵌入到自己项目内

    背景 我们日常开发中基本都是协同开发的,当然极个别的项目整体前后端都是一个人开发的,当多人协作时,尤其是前后端人员协同开发时 必然会面临着前端需要了解后端api接口的情况,两个选择,提前设计好文档,然 ...

  9. 从零开始带你实战搭建Spring Cloud Alibaba商城项目

    这里写目录标题 一:环境搭建 二:项目搭建 三:分布式组件--Spring Cloud Alibaba 1.微服务架构简介 2.为什么使用SpringCloud Alibaba作为组件 3.本次项目技 ...

最新文章

  1. Java IO系列之字节流拷贝文件性能比较
  2. OSI模型中的数据链路层和物理层的区分
  3. java的jbutton啥意思,Jbutton和Jpanel和JFrame之间的区别?
  4. linux的定cron计划任务命令
  5. 智林STM32程序源代码的分析和整理03(转帖)
  6. 为什么腾讯云要自研云原生数据库 CynosDB?
  7. NOIP2018初赛 解题报告
  8. python删除标点_python – 使用pandas快速删除标点符号
  9. mysql不带加密模式jar包_使用Xjar对jar文件进行加密,防止反编译
  10. 关于mis系统开发的一些配置含义
  11. java电影推荐系统_电影推荐系统源代码
  12. 哇!家居环境居然能“可视化”?这守护真的牛
  13. 乘2取整法_关于乘2取整法?
  14. “逃离”北京来到二线城市,谈谈面试和职业规划
  15. 深度学习论文-Cyclical Learning Rates for Training Neural Networks
  16. 爬虫加密算法实践(淘宝直播+百度指数)
  17. Linux设备类型有哪些?
  18. C#的OpenFileDialog和SaveFileDialog的常见用法
  19. android课程设计致谢,课程设计致谢老师
  20. s7400plc运行时关闭服务器,S7-400PLC频繁死机

热门文章

  1. redis中KEYS替代命令
  2. Leetcode题库 136.只出现一次的数字(异或 C实现)
  3. [算法笔记]-环形链表Ⅱ-解题方法
  4. mysql数据库存表情报错_mysql数据库存表情报错
  5. 学习记录-windows,开发板互通上网
  6. 美丽的窗花java分形_美丽的窗花教案
  7. Jenkins插件之Deploy
  8. [占坑] 近几天正在准备的文章
  9. Java script第二课
  10. 使用dbms_stats.gather_table_stats调整表的统计信息