一、 Feign简介

Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。不再需要拼接URL,参数等操作。项目主页:https://github.com/OpenFeign/feign 。

  • 集成Ribbon的负载均衡功能
  • 集成了Hystrix的熔断器功能
  • 支持请求压缩
  • 大大简化了远程调用的代码,同时功能还增强啦
  • Feign以更加优雅的方式编写远程调用代码,并简化重复代码

快速入门

实现步骤:

  1. 导入feign依赖
  2. 编写Feign客户端接口
  3. 消费者启动引导类开启Feign功能注解
  4. 访问接口测试

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相关推荐

  1. Spring Cloud Feign 1(声明式服务调用Feign 简介)

    Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...

  2. Spring Cloud Feign调用令牌携带问题

    Spring Cloud Feign调用令牌携带问题 微服务项目中模块之间的调用,检测令牌的合法性问题不可避免.使用feign拦截器可以解决. 1:在公用模块中添加maven依赖 [外链图片转存失败, ...

  3. Spring Cloud Feign使用详解

     通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...

  4. Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign

    一.客户端负载均衡:Spring Cloud Ribbon. Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的.通过Spring ...

  5. Spring Cloud Feign - 内部实现细节

    1. 概述 Feign用于服务间调用,它的内部实现是一个包含Ribbon(负载均衡)的JDK-HttpURLConnection(Http)调用.虽然调用形式是类似于RPC,但是实际调用是Http,这 ...

  6. Spring Cloud Feign 请求时附带请求头

    Spring Cloud Feign 请求时附带请求头 问题描述 解决方案 FeignConfiguration 使用 配置修改 问题描述 Feign 在请求时是不会将 request 的请求头带着请 ...

  7. Spring Cloud Feign传输Header,并保证多线程情况下也适用

    Spring Cloud Feign传输Header,并保证多线程情况下也适用 一.现象 微服务在生产中,常遇到需要把 header 传递到下一子服务的情况(如服务A访问服务B的接口,需要传递head ...

  8. Spring Cloud Feign原理详解

    目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...

  9. Spring Cloud Feign原理

    Spring Cloud Feign原理 Feign运行过程 重试机制 服务降级 负载均衡 隔舱原理 Feign运行过程 通过主类上的EnableFeignClients 注解开启FeignClien ...

最新文章

  1. 计算机科学与技术真的会掉头发吗,大学“最辛苦”的三个专业,“脱发率”很高,毕业后却都很吃香!...
  2. 体系文件管理解决方案
  3. 项目进度管理:控制进度
  4. Mysql date time formate
  5. 通俗易懂,什么是.NET Core以及.NET Core能做什么
  6. 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
  7. 内部类、抽象类、接口基本知识详解
  8. 【编程思想】什么是微服务
  9. 又涨价了!华为 P40系列海外售价曝光:还好国行版友好不少
  10. 2021年前端还好找工作吗?
  11. 【Proteus仿真8086】将IO接口电路封装成子电路CCT001
  12. Laravel框架——增删改查
  13. 译:Self-Modifying cod 和cacheflush
  14. 容器就业市场持续增长,5条建议让您快速掌握Docker技能
  15. displaytag手册
  16. 分离开发中的laravel
  17. 计算机无法连接此设备,[修复]目前,此硬件设备未连接到计算机(代码45) | MOS86...
  18. ufs 固态硬盘_看够了UFS/eMMC纠纷 再看笔记本固态硬盘速度的区别吧
  19. 6-10 找出大于num的最小素数
  20. 乔纳森 刘易斯 oracle,阿泰刘易斯都是幻想 专家点火箭引援之真命天子

热门文章

  1. 基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...
  2. apache camel_使用Apache Camel进行负载平衡
  3. ogm session_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
  4. jvm 错误_JVM因“ OutOfMemory”错误而关闭-我该怎么办?
  5. openshift_OpenShift上具有NetBeans的Java EE
  6. jolokia_Hawtio和Jolokia的Hibernate统计
  7. Spring Boot中的高级配置文件管理
  8. 展望Java的未来:空值类型
  9. 使用storm 实时计算_使用Storm进行可扩展的实时状态更新
  10. junit 循环测试_重复运行JUnit测试而没有循环