系列文章(更新ing):

「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现

「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制

「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate

Fegin简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

准备工作

继续用上节的工程, 启动eureka-server,端口为8761;启动service-hi 两次,端口分别为8762 、8863

简单使用

继续使用上节的eureka-client工程

1.加入Fegin依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在启动类加上@EnableFeignClients注解,开启Feign的功能

@SpringBootApplication
@EnableEurekaClient
//加下面这个
@EnableFeignClients
public class EurekaClientApplication { public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
} @Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}

3.定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务

比如在代码中调用了service-hi服务的“/hi”接口,代码如下:

@FeignClient("service-hi")
public interface FeginClient {
//service-hi服务中名字为"hi"的接口
@GetMapping("hi")
String sayHi();
}

4.在controller层,对外暴露一个"hiFromFegin"的API接口,通过上面定义的Feign客户端sayHi 来消费服务

//编译器报错,无视。
//因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
@Autowired
private FeginClient feginClient; @GetMapping("hiFromFegin")
public String hiFromFegin() {
return feginClient.sayHi();
}

5.启动程序,多次访问http://localhost:8861/hiFromFegin,浏览器交替显示

hi!i am come from 8862hi!
i am come from 8863

至此,使用Feign消费服务已实现,Feign内置ribbon,带负载均衡的效果

Feign的优势(相比RestTemplate)

1.声明式的REST客户端,通过编写简单的接口和插入注解,只需要像调用本地方法一样调用它就可以完成服务请求及相关处理,使REST调用更加简单

若使用RestTemplate,则需要深入了解HTTP级别API的细节。

2.内置Ribbon,配合Eureka实现负载均衡

如果觉得不错,分享给你的朋友!

THANDKS

  • End -

一个立志成大腿而每天努力奋斗的年轻人

伴学习伴成长,成长之路你并不孤单!

最新文章

  1. CentOS7安装NodeJS6.9
  2. crontab中执行任务定位到秒级
  3. Servlet访问第一次500,刷新后404的解决办法
  4. SVN分支管理策略个人见解
  5. BZOJ 4619 Swap Space 解题报告
  6. 修复ext4日志(jbd2)bug( Ext4 文件系统有以下 Bug)
  7. SQLITE3 使用总结
  8. [Form Builer]Locking Mode and LOCK_RECORD
  9. UNITY3D ShadeSH9
  10. 使用代码自定义UIView注意一二三
  11. 微信或手机浏览器在线显示office文件(已測试ios、android)
  12. 使用curl模拟ip和来源进行网站采集的实现方法
  13. MPSOC之6——开发流程linux编译
  14. 【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)
  15. vmware 6 虚拟化 全系列 序列号
  16. HTML 转 PDF的两种实现方式
  17. Nopcommerce安装,应用及二次开发视频
  18. html转成pdf,下载(html2canvas 和 jsPDF)
  19. React native 之设置IOS的图标,名称和启动图(下篇文章会讲到RN的android的相关设置)
  20. Keil debugging techniques and alternative printf (SWO function)

热门文章

  1. dotnet 使用 Environment.FailFast 结束程序
  2. jQuery的使用及关于框架造型 专题
  3. 一点资讯 视频抓取 phantomjs
  4. STVD、IAR两种编译器比较
  5. vue基础用法
  6. poj - 3585(二次扫描与换根法)
  7. 使用app-inspector时报错connect ECONNREFUSED 127.0.0.1:8001的解决方案
  8. verilog HDL 进击之路
  9. HDU4352 XHXJ&#39;s LIS 题解 数位DP
  10. llinux重启、用户切换、注销命令