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

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

相关推荐
Nerd(BUG版)1 小时前
Flutter学习day5--事件手势与命中测试
学习·flutter
Nerd(BUG版)2 小时前
KMP学习day4--Kotlin空安全与泛型
学习·安全·kotlin
東隅已逝,桑榆非晚3 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
wdyan2974 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
叼烟扛炮4 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮4 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
Rabitebla6 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
叼烟扛炮6 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
景煜拾年7 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
旖旎夜光7 小时前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习