远程调用 Spring Cloud Feign
一、 Feign简介
Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。不再需要拼接URL,参数等操作。项目主页:https://github.com/OpenFeign/feign 。
- 集成Ribbon的负载均衡功能
- 集成了Hystrix的熔断器功能
- 支持请求压缩
- 大大简化了远程调用的代码,同时功能还增强啦
- Feign以更加优雅的方式编写远程调用代码,并简化重复代码
快速入门
实现步骤:
- 导入feign依赖
- 编写Feign客户端接口
- 消费者启动引导类开启Feign功能注解
- 访问接口测试
1. 导入feign依赖
<!--配置feign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
1.1创建实体类User
package com.william.domain;import java.util.Date;/*** @author :lijunxuan* @date :Created in 2019/6/30 18:20* @description :* @version: 1.0*/
public class User {private Integer id;//主键idprivate String username;//用户名private String password;//密码private String name;//姓名private Integer age;//年龄private Integer sex;//性别 1男性,2女性private Date birthday; //出生日期private Date created; //创建时间private Date updated; //更新时间private String note;//备注@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", name='" + name + '\'' +", age=" + age +", sex=" + sex +", birthday=" + birthday +", created=" + created +", updated=" + updated +", note='" + note + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Date getCreated() {return created;}public void setCreated(Date created) {this.created = created;}public Date getUpdated() {return updated;}public void setUpdated(Date updated) {this.updated = updated;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}
}
2. 编写Feign客户端接口
package com.william.service;import com.william.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient("user-service")
public interface UserClient {/***RequestMapping* spring mvc 里面的注解* RequestMapping 反向映射,生成请求地址。http请求* @RequestParam("id") 是必须要进行请求地址参数的绑定* @param id* @return*/@RequestMapping("/user/findById")User findById(@RequestParam("id") Integer id);
}
3. 消费者启动引导类DemoApplication开启Feign功能注解
@EnableFeignClients//开启feign客户端支持
3.1编写ConsumerFeignController,使用UserClient访问
package com.william.controller;import com.william.domain.User;
import com.william.service.UserClient;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** @author :lijunxuan* @date :Created in 2019/6/30 18:33* @description :* @version: 1.0*/
@RestController
public class FeigConsumerController {@ResourceUserClient userClient;//注入FeignCLient@RequestMapping("/findByIdFeign")public User findByIdFeign(Integer id){return userClient.findById(id);}
}
4. 访问接口测试
远程调用 Spring Cloud Feign相关推荐
- Spring Cloud Feign 1(声明式服务调用Feign 简介)
Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...
- Spring Cloud Feign调用令牌携带问题
Spring Cloud Feign调用令牌携带问题 微服务项目中模块之间的调用,检测令牌的合法性问题不可避免.使用feign拦截器可以解决. 1:在公用模块中添加maven依赖 [外链图片转存失败, ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
- Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign
一.客户端负载均衡:Spring Cloud Ribbon. Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的.通过Spring ...
- Spring Cloud Feign - 内部实现细节
1. 概述 Feign用于服务间调用,它的内部实现是一个包含Ribbon(负载均衡)的JDK-HttpURLConnection(Http)调用.虽然调用形式是类似于RPC,但是实际调用是Http,这 ...
- Spring Cloud Feign 请求时附带请求头
Spring Cloud Feign 请求时附带请求头 问题描述 解决方案 FeignConfiguration 使用 配置修改 问题描述 Feign 在请求时是不会将 request 的请求头带着请 ...
- Spring Cloud Feign传输Header,并保证多线程情况下也适用
Spring Cloud Feign传输Header,并保证多线程情况下也适用 一.现象 微服务在生产中,常遇到需要把 header 传递到下一子服务的情况(如服务A访问服务B的接口,需要传递head ...
- Spring Cloud Feign原理详解
目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...
- Spring Cloud Feign原理
Spring Cloud Feign原理 Feign运行过程 重试机制 服务降级 负载均衡 隔舱原理 Feign运行过程 通过主类上的EnableFeignClients 注解开启FeignClien ...
最新文章
- 计算机科学与技术真的会掉头发吗,大学“最辛苦”的三个专业,“脱发率”很高,毕业后却都很吃香!...
- 体系文件管理解决方案
- 项目进度管理:控制进度
- Mysql date time formate
- 通俗易懂,什么是.NET Core以及.NET Core能做什么
- 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
- 内部类、抽象类、接口基本知识详解
- 【编程思想】什么是微服务
- 又涨价了!华为 P40系列海外售价曝光:还好国行版友好不少
- 2021年前端还好找工作吗?
- 【Proteus仿真8086】将IO接口电路封装成子电路CCT001
- Laravel框架——增删改查
- 译:Self-Modifying cod 和cacheflush
- 容器就业市场持续增长,5条建议让您快速掌握Docker技能
- displaytag手册
- 分离开发中的laravel
- 计算机无法连接此设备,[修复]目前,此硬件设备未连接到计算机(代码45) | MOS86...
- ufs 固态硬盘_看够了UFS/eMMC纠纷 再看笔记本固态硬盘速度的区别吧
- 6-10 找出大于num的最小素数
- 乔纳森 刘易斯 oracle,阿泰刘易斯都是幻想 专家点火箭引援之真命天子
热门文章
- 基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...
- apache camel_使用Apache Camel进行负载平衡
- ogm session_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
- jvm 错误_JVM因“ OutOfMemory”错误而关闭-我该怎么办?
- openshift_OpenShift上具有NetBeans的Java EE
- jolokia_Hawtio和Jolokia的Hibernate统计
- Spring Boot中的高级配置文件管理
- 展望Java的未来:空值类型
- 使用storm 实时计算_使用Storm进行可扩展的实时状态更新
- junit 循环测试_重复运行JUnit测试而没有循环