当前位置:首页 > 服务端 > Feign的理解

Feign的理解

2022年11月06日 23:04:54服务端19

Feign是什么?

Feign是一个http请求调用的轻量级框架,也可以说是声明式WebService客户端

Feign的作用

可以以Java接口注解的方式调用Http请求,它使java调用Http请求变的简单
Feign集成了Ribbon,实现了客户端的负载均衡

Feign的工作原理(简易版)

1、首先通过@EnableFeignCleints注解开启FeignCleint
2、根据Feign的规则实现接口,并加@FeignCleint注解
3、程序启动后,会进行包扫描,扫描所有的@FeignCleint的注解的类,并将这些信息注入到ioc容器中。
4、当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplate
5、RequesTemplate再生成Request
6、Request交给Client去处理,其中Client默认是HttpUrlConnection(也可以是HttpClient或Okhttp,需要配置)
7、最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableHystrix
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class JisServiceConsumerApplication {

public static void main(String[] args) {
	SpringApplication.run(JisServiceConsumerApplication.class, args);
}

}

根据Feign的规则实现的接口

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableHystrix
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class JisServiceConsumerApplication {

public static void main(String[] args) {
	SpringApplication.run(JisServiceConsumerApplication.class, args);
}

}

熔断器的fallback(调用接口失败时会执行)

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;

import com.example.jisserviceconsumer.inter.HelloRemote;

@Component
public class HelloRemoteHystrix implements HelloRemote{

@Override
public String hello(@RequestParam(value = "name") String name) {
    return "hello" +name+", this messge send failed biu biu biu ~ ";
}

}

作者:马崮蚂蚁哥
来源链接:https://www.cnblogs.com/jis121/p/11018327.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68243.html

标签: Feign
分享给朋友:

“Feign的理解” 的相关文章

Spring Cloud Consumer端Feign注入报错

Spring Cloud Consumer端Feign注入报错

报错信息如下:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderInfoController': Unsatisfied depen...

SpringCloud:Feign模块引用版本问题

java.io.FileNotFoundException: class path resource [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class] cannot...

java 面试题——feign

java 面试题——feign

作者:小十木 来源链接:https://blog.csdn.net/m0_37664223/article/details/106571572...

SpringCloud笔记五:Feign

SpringCloud笔记五:Feign

目录 什么是Feign? 有了Ribbon我还要Feign干嘛? 新建consumer-feign 修改api项目 引入Maven文件 新建feign...

Springcloud踩坑记---使用feignclient远程调用服务404

Springcloud踩坑记---使用feignclient远程调用服务404

公司项目进行微服务改造,由之前的dubbo改用SpringCloud,微服务之间通过FeignClient进行调用,今天在测试的时候,eureka注册中心有相应的服务,但feignclient就是无法调通,一直报404错误,排查过程如下: 一、问题:   服务提供方定义的接...

SpringCloud 中集成Sentinel+Feign实现服务熔断降级

SpringCloud 中集成Sentinel+Feign实现服务熔断降级

Sentine 1.背景 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。这里大家可能会问:Sentinel 和之前常用的熔断降级库 Netf...

关于本次【Unsatisfied dependency expressed through field 'iClientFeignEmployeeService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.oppo】

关于本次springboot项目上线遇到的问题归纳: 1.本地合适但是线上扫不到包,报错:【Unsatisfied dependency expressed through field 'iClientFeignEmployeeService'; nested exception...

SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解

SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解

前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡。 SpringCloud Feign Feign 介绍 Feign是一个声明式的Web Serv...

微服务调用组件Dubbo实战 & Open Feign迁移到Dubbo解决方案

微服务调用组件Dubbo实战 & Open Feign迁移到Dubbo解决方案

文章目录 一、Spring Cloud整合Dubbo 1.1 spring-cloud-dubbo-api 1.2 spring-cloud-dubbo-provider-...

【SpringBoot】通过Feign调用传递Header中参数

如何通过Feign传递Header参数   问题描述 我们在SpringCloud中使用Feign请求另一个服务的Api接口时,有将Header中参数传递下去的需求,如果不做特殊处理,就会将Header中的参数丢失。   解决方案...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。