010 SpringCloud 学习笔记6-----Feign
1.概述
Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。

2.入门案例
改造lucky-service-consumer模块
(1)导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
(2)开启Feign功能
我们在启动类上,添加@EnableFeignClients 注解,开启Feign功能
删除RestTemplate:feign已经自动集成了Ribbon负载均衡的RestTemplate。所以,此处不需要再注册RestTemplate。
修改后代码:
package lucky.service; import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.openfeign.EnableFeignClients; @SpringCloudApplication
@EnableFeignClients // 开启feign客户端
public class LuckyServiceConsumerApplication { public static void main(String[] args) {
SpringApplication.run(LuckyServiceConsumerApplication.class, args);
} }
(3)Feign的客户端
在lucky-service-consumer模块中,添加UserClient接口:
package lucky.service.client; import lucky.service.domain.Users;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; /**
* value = "SERVICE-PROVIDER" 这里的"SERVICE-PROVIDER"是Eureka 注册中心中的要调用的服务应用名
* @RequestMapping(path = "/users/queryUsersById") 这里的“getMsg”是要调用的服务应用里的相应的方法
* 注意:如果SERVICE-PROVIDER服务下面的访问路径是 /users/queryUsersById ,则这里也要写"/users/queryUsersById)
* public Users queryUserById(@RequestParam("id") Integer id); 方法完全复制UserController中的方法,方法名可以修改(即方法名可以自定义)
*/
@FeignClient(value = "SERVICE-PROVIDER")
public interface UserClient { @RequestMapping(path = "/users/queryUsersById")
public Users queryUserById(@RequestParam("id") Integer id);
}
注意:
* value = "SERVICE-PROVIDER" 这里的"SERVICE-PROVIDER"是已在Eureka 注册中心注册的要调用的服务应用名
* @RequestMapping(path = "/users/queryUsersById") 这里的“getMsg”是要调用的服务应用里的相应的方法
* 注意:如果SERVICE-PROVIDER服务下面的访问路径是 /users/queryUsersById ,则这里也要写"/users/queryUsersById)
* public Users queryUserById(@RequestParam("id") Integer id); 方法完全复制UserController中的方法,方法名可以修改(即方法名可以自定义)
(4)UserController.java
修改UserController,调用UserClient接口:
package lucky.service.controller; import lucky.service.client.UserClient;
import lucky.service.domain.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import javax.annotation.Resource;
import java.util.List; /**
* 逻辑分析:浏览器中输入http://localhost:8080/consumer/user/queryUsersById?id=2
* url中:/consumer/user 对应类上注解的路径
* url中:/queryUsersById 对应方法路径
* 调用userClient向服务端发请求
*/
@Controller
@RequestMapping(path = "/consumer/user")
public class UserController { @Autowired
private UserClient userClient; @RequestMapping(path = "/queryUsersById")
@ResponseBody
public Users queryUserById(@RequestParam("id") Integer id){
Users users = this.userClient.queryUserById(id);
return users;
}
}
(5)测试结果

010 SpringCloud 学习笔记6-----Feign的更多相关文章
- SpringCloud学习笔记(3):使用Feign实现声明式服务调用
简介 Feign是一个声明式的Web Service客户端,它简化了Web服务客户端的编写操作,相对于Ribbon+RestTemplate的方式,开发者只需通过简单的接口和注解来调用HTTP API ...
- SpringCloud学习笔记(4):Hystrix容错机制
简介 在微服务架构中,微服务之间的依赖关系错综复杂,难免的某些服务会出现故障,导致服务调用方出现远程调度的线程阻塞.在高负载的场景下,如果不做任何处理,可能会引起级联故障,导致服务调用方的资源耗尽甚至 ...
- SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据
简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控.本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化. 项目介绍 sc ...
- SpringCloud学习笔记:服务支撑组件
SpringCloud学习笔记:服务支撑组件 服务支撑组件 在微服务的演进过程中,为了最大化利用微服务的优势,保障系统的高可用性,需要通过一些服务支撑组件来协助服务间有效的协作.各个服务支撑组件的原理 ...
- SpringCloud学习笔记(2):使用Ribbon负载均衡
简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具,在注册中心对Ribbon客户端进行注册后,Ribbon可以基于某种负载均衡算法,如轮询(默认 ...
- SpringCloud学习笔记(6):使用Zuul构建服务网关
简介 Zuul是Netflix提供的一个开源的API网关服务器,SpringCloud对Zuul进行了整合和增强.服务网关Zuul聚合了所有微服务接口,并统一对外暴露,外部客户端只需与服务网关交互即可 ...
- SpringCloud学习笔记(7):使用Spring Cloud Config配置中心
简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件 ...
- SpringCloud学习笔记(六、SpringCloud Netflix Feign)
目录: feign简介 feign应用 feign简介: feign是一款Netflix开源的声明式.模板化的http客户端,它可以更加便捷.优雅的调用http api:SpringCloud对Net ...
- SpringCloud学习笔记(七):Hystrix断路器
概述 什么时候需要断路器?熔断? 举个简单的例子:小明喜欢小美,可是小美没有电话,小美给了小明家里的座机,小明打给座机,这个时候小美的妈妈接到了,小明怕妈妈知道自己喜欢小美,就跟小美妈妈说让小美哥接电 ...
随机推荐
- count to any
A small computer game, puzzle, decryption
- 基于docker-compose部署 简单nsq 集群
主要目的是搭建一个测试环境,同时使用了nodejs 客户端sdk nsq 简单了解 nsqd:一个负责接收.排队.转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发现服 ...
- Unicode-objects must be encoded before hashing 错误解决办法
提交注册用户数据后出来这个,错误原因是update()必须指定要加密的字符串的字符编码 #encryptions1 = sha1()s1.update(upwd.encode("utf8&q ...
- virsh使用总结
做下面操作前先安装这些工具: yum install virt-install libvirt-admin libvirt-client libvirt-daemon libvirt主要的配 ...
- shell 小数比较大小
a=1.6b=6.1c=`echo "$a > $b" | bc`然後,如果 $c 是 1 ,那就成立,否則不成立. 参考: http://ju.outofmemory.cn ...
- Oncomine 数据库
网址 https://www.oncomine.org/resource/login.html Oncomine 是目前世界上最大的癌基因芯片数据库和整合数据挖掘平台,旨在挖掘癌症基因信息.Onco ...
- 解决wordpress修改固定链接后出现404错误不能访问文章的方法
首先,建议大家安装完wordpress网站程序之后第一时间设置一下固定链接,避免以后修改出错.在wp后台仪表盘左侧导航里找到“设置——固定链接”即可配置你的wordpress固定链接,通常我习惯使用的 ...
- Spring系列:下载
Spring 官网:http://projects.spring.io/spring-framework/ Spring下载地址:https://repo.spring.io/simple/libs- ...
- [Beta]Scrum Meeting#10
github 本次会议项目由PM召开,时间为5月15日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客整理文档 撰写博客整理文档 swoip 为适应新功能调整布局前 ...
- VUE 动态加载组件的四种方式
动态加载组件的四种方式: 1.使用import导入组件,可以获取到组件 var name = 'system'; var myComponent =() => import('../compon ...