OpenFeign --学习笔记

什么是OpenFeign?

OpenFeign可以想象成一座连接客户端(服务器)和服务器之间的桥梁。在微服务架构中,各个服务之间像小岛屿一样分布在网络上,它们需要相互通信才能协同工作。但是,这些岛屿之间并没有现成的桥梁,这就需要一种工具来建立联系。

当把项目拆成微服务时,服务之间需要互相调用的时候就很不方便,每个服务都拆成了一个独立的个体,这个时候再想去调用其它服务的话就可以用到OpenFeign,采用在线请求的方式,通过网络而不是再通过本地去调用其它服务。

OpenFeign就像是一个建桥专家。你只需要给它提供一张图纸(即定义一个接口),告诉它两边的岛屿需要什么样的路(即你需要调用的远程服务的方法)。OpenFeign就会自动构建一座桥(实现服务之间的通信)。

当客户端想要调用远程服务的某个功能时,通过这座桥就可以直接发送请求,不再需要亲自游过河(不需要使用复杂的HTTP客户端操作)。简单来说,就好比你给OpenFeign一个购物清单,它会到对面的商店去帮你买东西并带回来。

OpenFeign中的每一次HTTP请求都归结为简单的Java方法调用,让开发者感觉就像是在用本地方法一样,而不必担心服务之间的网络通信细节。换句话说,就是让微服务之间的对话变得简单易懂,像邻里之间的搭话一样自然亲切。

OpenFeign的使用

1、引入依赖

复制代码
  //先在父类中引入springcloud的依赖
  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

2、添加注解

在启动类上添加注解,启动OpenFeign功能:

复制代码
@EnableFeignClients(basePackages = "com.hmall.api.client",defaultConfiguration = DefaultFeignConfig.class) //其中第一个规定了client接口的扫描包,第二个是openfeign的配置类
@MapperScan("com.hmall.cart.mapper")
@SpringBootApplication
public class CartApplication {
    public static void main(String[] args) {
       ...
    }
}

3、声明并编写Feign Client接口:

示例:

复制代码
@FeignClient("cart-service")    //要调用服务的名称,利用nacos得到目标服务地址并访问
public interface CartClient {

    @DeleteMapping("/carts")    //接口具体编写可以使用mvc的注解
    void deleteCartItemByIds(@RequestParam("ids") Collection<Long> ids);
}
  • @FeignClient("cart-service") :声明服务名称

  • @DeleteMapping("/items") :声明请求路径和请求方式

  • @RequestParam("ids") Collection<Long> ids :声明请求参数

  • void :返回值类型

4、使用FeignClient

直接注入接口使用就可以了

相关推荐
Test.X15 分钟前
学习16天:pytest学习
学习·pytest
XISHI_TIANLAN24 分钟前
【多模态学习】Q&A6: 什么是MOE架构?Router Z Loss函数是指什么?负载均衡损失(Load Balancing Loss)又是什么?
学习·算法·语言模型
Diligence8151 小时前
计算机网络学习总结(二)应用层
学习·计算机网络
小墨宝1 小时前
web前端学习LangGraph
前端·学习
memorycx2 小时前
听课笔记CSAPP
笔记
尘似鹤2 小时前
微信小程序学习(五)
学习·微信小程序·小程序
计算机毕业设计小帅2 小时前
【2026计算机毕业设计】基于微信小程序的英语在线学习系统
学习·微信小程序·毕业设计·课程设计
千忧散2 小时前
Unity Socket学习笔记 (三)TCP&UDP
笔记·学习·unity·c#
今天只学一颗糖3 小时前
Linux学习笔记--触摸屏驱动
笔记·学习
Gin3873 小时前
mooc自动互评脚本笔记---2025年10月11日
笔记