一,新建Feign工程microservicecloud-consumer-dept-feign,拷贝microservicecloud-consumer-dept-80这个工程的配置和程序

二,修改配置文件pom.xml  引入Feign依赖

  <!--Feign的依赖引入--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency>

三,修改我们的启动类为 DeptConsumer80_Feign_App

package atguigu.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
public class DeptConsumer80_Feign_App {public static void main(String[] args) {SpringApplication.run(DeptConsumer80_Feign_App.class, args);}
}

四,yml配置文件不用修改

五,修改api(microservicecloud-api)添加新的接口DeptClientService

新增新的注解@FeignClient

package com.atguigu.springcloud.service;import java.util.List;import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import com.atguigu.springcloud.entities.Dept;/*** * @Description: 修改microservicecloud-api工程,根据已经有的DeptClientService接口* @author zzyy* @date 2019年10月20日*/
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService
{@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)public Dept get(@PathVariable("id") long id);@RequestMapping(value = "/dept/list", method = RequestMethod.GET)public List<Dept> list();@RequestMapping(value = "/dept/add", method = RequestMethod.POST)public boolean add(Dept dept);
}

这样就已经编码完成但是api是我们所有工程的公共部分

注意:因为是公共部分,我们要重新编译,Build Module 'microservicecloud-api'

六,我们编写到这来我们回到microservicecloud-consumer-dept-feign工程修改Controller,

package atguigu.springcloud.controller;import com.atguigu.springcloud.entities.Dept;
import com.atguigu.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;
import java.util.List;@RestController
@RequestMapping("/consumer")
public class DeptController_Consumer {//@Autowired@Resourceprivate DeptClientService service;@RequestMapping(value = "/dept/get/{id}")public Dept get(@PathVariable("id") Long id){return this.service.get(id);}@RequestMapping(value = "/dept/list")public List<Dept> list(){return this.service.list();}@RequestMapping(value = "/dept/add")public Object add(Dept dept){return this.service.add(dept);}
}

七,我们前面在api定义了新的接口,加了@FeignClient注解使用Feign,那我们的主启动类就要开启,修改主启动类

添加新的注解@EnableFeignClients(basePackages= {"com.atguigu.springcloud"})  表示开启新的feign调用方式

package atguigu.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= {"com.atguigu.springcloud"})
@ComponentScan("com.atguigu.springcloud")
public class DeptConsumer80_Feign_App {public static void main(String[] args) {SpringApplication.run(DeptConsumer80_Feign_App.class, args);}
}

到这来我们基本就已经完成了基本的编码,那我们来测试下

关于启动:Eureka集群搭建和启动参考:https://blog.csdn.net/ywl470812087/article/details/102594937

启动3个微服务提供者,如果不懂微服务提供者实现请参考https://blog.csdn.net/ywl470812087/article/details/102535582

启动Feign工程:

访问:http://localhost/consumer/dept/get/1

上图测试结果看:默认使用了轮询的负载均衡

总结:

SpringCloud Feign实战(二)相关推荐

  1. springcloud Feign断路器实战和问题总结

    springcloud Feign断路器实战和问题总结 断路由是防止该服务调用其他外服务时,外服务宕机或者出差时,影响到本服务的宕机,引起大面积的瘫痪,所以才有了断路由的由来. springcloud ...

  2. SpringCloud企业实战专栏

    Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样板模式, 使用Spring Clo ...

  3. 视频教程-spring-cloud分布式实战-Java

    spring-cloud分布式实战 10余年软件工作经验,任职过程序员,项目经理,技术经理,架构师.在互联网公司从0到1的搭建过项目 李焱兵 ¥199.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  4. SpringCloud Feign声明式服务调用

    SpringCloud Feign声明式服务调用 1. 加入pom依赖 2. Application.java上声明@EnableFeignClients 3. @FeignClient声明接口调用服 ...

  5. SpringCloud feign 的三种超时时间配置

    1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...

  6. 【Qt】数据库实战(二)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 连接到数据库 04. 操作结果集 06. 附录 01. 概述 SQL即结构化查询语言,是关系数据库的标准语言.前面已经在Q ...

  7. GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)

    参考资料:http://www.cnblogs.com/fsjohnhuang/archive/2011/12/17/2291200.html 因为使用ObjectDataSource自带的缓存机制无 ...

  8. CCNP精粹系列之十八--路由映射实战二,博主推荐文章

    路由映射实战二 本篇博文和上一篇是紧密结合的,只是在上个试验的基础上作了改动,达到其他的试验效果. 试验二: 在R1上增加一个网段,并发布路由.这里采用三种方法. 如下是第一种,是在试验一的基础上直接 ...

  9. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

最新文章

  1. 牛顿:伸向未知量的利爪
  2. [云炬创业管理笔记]第一章测试1
  3. Thrall’s Dream HRBUST - 2048【BFS or 强连通分量】
  4. 智慧城轨信息技术架构及信息安全规范_在深圳,我们打造智慧地铁的“最强大脑”...
  5. label里面的文字换行_批量识别图中文字自动命名,让你1秒找到骚图!太强大了!...
  6. 电脑练习打字软件_练习打字软件Master of Typing 3 Mac
  7. oracle建共享dblink,oracle建多个dblink
  8. liunx服务器数据库文件大小,linux如何查看数据库服务器大小
  9. MacBook Pro 2017 13寸版 触摸板windows驱动开发(开发HID鼠标键盘驱动之一)
  10. 将多张图片缩小合为一张图片(千图成像)
  11. win7科学计算机的用法,Win7自带计算器使用功能介绍
  12. 【SAP-SD】物料 X 未对销售组织 XXXX 分销渠道 X 语言 DE 定义
  13. Electron“安装已中止,安装程序未成功地运行完成”
  14. Busting Frame Busting: a Study of Clickjacking Vulnerabilities on Popular Sites
  15. 浅论cherry机械键盘与其在war3中的表现
  16. 网站访问速度慢的排查方法
  17. Redis 50问
  18. jmeter正则表达式提取器的用法和正则
  19. Android 定位的实现
  20. 【元数据】饿了么元数据管理实践之路

热门文章

  1. Python实例 63,64
  2. java char 空字符串_java判断char是否为空的方法
  3. 【OpenCV 例程200篇】87. 频率域钝化掩蔽
  4. 用一个参数化的模型来投影点
  5. java容易掉发吗_容易被忽略的面试题—Java高并发
  6. 批量修改栏目名_Endnote中英文混排批量修改小技巧
  7. charles请求入参中有乱码
  8. jmeter5.1.1启动提示not able to find java executable or version的解决办法
  9. 在Windows 7 x64 上编译libsvn
  10. linux sed 循环多行,linux sed 多行处理详细总结