什么是OpenFeign

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

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

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

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

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

OpenFeign的使用

1、引入依赖

  //先在父类中引入springcloud的依赖
  
  
      org.springframework.cloud
      spring-cloud-starter-openfeign
  
  
  
      org.springframework.cloud
      spring-cloud-starter-loadbalancer
  

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 ids);
}
  • @FeignClient("cart-service") :声明服务名称

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

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

  • void :返回值类型

4、使用FeignClient

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

OpenFeign –学习笔记插图

OpenFeign –学习笔记插图(1)

本站无任何商业行为
个人在线分享 » OpenFeign –学习笔记
E-->