NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 设计模式

  • 开发规范

  • 经验分享

  • 记录

  • 快速开始

  • 笔记

  • 面试题

  • 微服务

    • 项目结构

    • Nacos

    • Gateway

    • OpenFeign

      • Microservice - OpenFeign
        • 简介
        • 快速使用
          • 服务提供方 - API模块
          • 创建模块
          • 添加依赖
          • 定义接口
          • 服务提供方 - 服务模块
          • 创建模块
          • 添加依赖
          • 实现接口
          • 服务调用方
          • 添加依赖
          • 启动类
        • 参考资料
    • Seata

  • 踩过的坑

  • Java
  • 微服务
  • OpenFeign
NipGeihou
2023-04-17
目录

Microservice - OpenFeign

# 简介

  • 一个 HTTP 客户端
  • 可以配合 Eureka、Nacos 实现通过服务名调用其他微服务接口

# 快速使用

# 服务提供方 - API 模块

# 创建模块

略

# 添加依赖

<!-- 无需定义版本 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

# 定义接口

推荐包路径: cn.nipx.业务名称.feign

@FeignClient("stores")
public interface StoreClient {
    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    List<Store> getStores();

    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    Page<Store> getStores(Pageable pageable);

    @RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}", consumes = "application/json")
    Store update(@PathVariable("storeId") Long storeId, Store store);

    @RequestMapping(method = RequestMethod.DELETE, value = "/stores/{storeId:\\d+}")
    void delete(@PathVariable Long storeId);
}

笔记

  • 这里直接复制的官方文档的,可以进一步简化,实际与 Controller 大同小异。
  • 类上的 @FeignClient 最为重要,是之后调用方扫描注册容器的唯一标识, stores 为服务的名称

# 服务提供方 - 服务模块

# 创建模块

略

# 添加依赖

把 服务提供方 - API模块

# 实现接口

推荐包路径: cn.nipx.业务名称.feign.impl

实现在 API 模块定义的接口

@RestController
public class StoreClientImpl implements StoreClient{
    
    private final StoreService storeService;
    
    ....
}

笔记

实际上它就是一个控制器

# 服务调用方

# 添加依赖

引入 服务提供方 - API模块 依赖

# 启动类

添加注解


 









@SpringBootApplication
@EnableFeignClients
// @EnableFeignClients(basePackages = "cn.nipx")
public class Application {

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

}

笔记

当调用方与提供方所在的包路径不一致时,还需要添加 basePackages 属性告知 Client 所在包路径

# 参考资料

  1. Spring Cloud OpenFeign (opens new window)
上次更新: 2023/04/17, 23:26:02
Microservice - Spring Cloud Gateway(网关)上手
Microservice - Seata

← Microservice - Spring Cloud Gateway(网关)上手 Microservice - Seata→

最近更新
01
元器件
05-23
02
iSCSI服务搭建
05-10
03
磁盘管理与文件系统
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式