IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springcloud利用feign调用接口案例 -> 正文阅读

[Java知识库]springcloud利用feign调用接口案例

一、简介

feign简介:远程调用使用

二、核心

核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者

?三、JDK Proxy代理实例特点

远程接口的本地JDK Proxy代理实例,有以下特点:

(1)Proxy代理实例,实现了一个加 @FeignClient 注解的远程调用接口;

(2)Proxy代理实例,能在内部进行HTTP请求的封装,以及发送HTTP 请求;

(3)Proxy代理实例,能处理远程HTTP请求的响应,并且完成结果的解码,然后返回给调用者。

四、实现案例

准备两个模块,一个是支付模块,一个是客户模块,现在通过feign实现支付模块去调用客户模块

?

1、支付模块导包

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

?2、在支付模块上增加注解

basePackages表示扫描的包,可以自定义的

@SpringBootApplication
@EnableFeignClients(basePackages = {"com.*"})
public class CloudProviderPaymentApplication {

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

}

3、在客户模块上建立feign接口

FeignClient参数详解

?contextId:用来区分FeignClient实例

?value:对应的是调用的微服务的服务名,对用服务发现、走网关调用,这个很关键。

?fallbackFactory:一种回退的方式,回退的方式有两种,一种是fallbackFactory,一种是fallback ,在默认情况下fallback默认优先级比fallfactory优先级高

@FeignClient(contextId = "feignTestService",value = "cloud-consumer-service",fallbackFactory = FeignTestFallbackFactory.class)
public interface FeignTestService {

    
    @PostMapping("/test/feignTest")
    void feignTest();

}

4、在客户模块上建立feign回滚工厂

和上面fallbackFactory类对应

@Component
public class FeignTestFallbackFactory implements FallbackFactory<FeignTestService > {
    private static final Logger log = LoggerFactory.getLogger(FeignTestFallbackFactory.class);
    @Override
    public FeignTestService create(Throwable cause) {
        log.error("服务调用失败...................");

        return new FeignTestService() {
            @Override
            public void feignTest() {
                System.out.println("服务调用失败");
            }
        };
    }
}

5、客户模块controller层

 @PostMapping("/feignTest")
    public void FeignTest(){
        System.out.println("feign接口已经被调用了");
}

6、支付模块controller层

@Autowired
private FeignTestService feignTestService;
   
@GetMapping("/test")
public void testFeign() {
   System.out.println("开始执行feign!!!!");
   feignTestService.feignTest();
}

7、结果

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:27:04  更:2022-10-08 20:29:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:32:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码