当前位置: 首页 > article >正文

springboot整合openfeign

文章目录

    • 准备
    • 一、引入必要依赖
    • 二、写一个feign client并暴露到注册中心
      • 2.1 client
      • 2.2 开启Feign客户端功能
    • 三、别的服务引入IProductClient并调用方法
      • 3.1 建一个order-service,引入IProductClient所在模块
      • 3.2 注入IProductClient,并调用方法
    • 四、启动服务
    • 五、启动两个服务,访问端口
    • 六、目录结构

准备

  • 父工程pom文件参考spring-boot、spring-cloud、spring-cloud-alibaba的常用依赖的依赖声明及pom文件
  • springboot整合nacos参考springboot整合nacos

一、引入必要依赖

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

二、写一个feign client并暴露到注册中心

2.1 client

对应的controller方法为

@RestController
@RequestMapping("/product")
public class ProductController {

    @GetMapping("/list")
    public String list(){
        return "product list";
    }
}

IProductClient,用来让别的服务可以调用ProductController的对应方法。
value对应的是服务名

@FeignClient(value = "product-service",path = "/product")
public interface IProductClient {

    @GetMapping("/list")
    public String list();
}

2.2 开启Feign客户端功能

@EnableFeignClients(basePackages = "com.hdl.client")

否则会报错,bean找不到

Field productClient in com.hdl.controller.OrderController required a bean of type 'com.hdl.client.IProductClient' that could not be found.

三、别的服务引入IProductClient并调用方法

3.1 建一个order-service,引入IProductClient所在模块

微服务端口号为8081,并将order-service注册到nacos上,这个步骤省略;
引入IProductClient所在模块,不用引openfeign,因为引入这个依赖,那么openfeign已经在classpath下了

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>product-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

3.2 注入IProductClient,并调用方法

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    IProductClient productClient;

    @GetMapping("/list")
    public String list(){

        String list = productClient.list();
        return list +" order list";
    }
}

四、启动服务

启动order-service时可能会出现以下错误

Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?

原因是:SpringCloud FeignHoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错。
解决方法:引入spring-cloud-loadbalancer并且排除掉nacos中的Ribbon依赖(但是我这里,没有排除ribbon依赖也可以)

order-service中引入

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

五、启动两个服务,访问端口

发现feign远程调用成功了
在这里插入图片描述

六、目录结构

在这里插入图片描述


http://www.kler.cn/a/324876.html

相关文章:

  • RedHat7—Linux中kickstart自动安装脚本制作
  • 结构化需求分析与设计
  • SpringBoot如何集成WebSocket
  • vue2和vue3:diff算法的区别?
  • 动态规划-完全背包问题——518.零钱兑换II
  • PyAEDT:Ansys Electronics Desktop API 简介
  • XSS(内含DVWA)
  • 如何制作Linux系统盘
  • Unity给物体添加网格(Wire)绘制的方法
  • Dubbo快速入门(一):分布式与微服务、Dubbo基本概念
  • 推荐一款开源的链路监控系统
  • java 框架组件
  • python习题1
  • 半导体制造过程中设备通信的高级概述
  • 从 Tesla 的 TTPoE 看资源和算法
  • 第一弹:llama.cpp编译
  • macOS安装MySQL以后如何配置环境变量
  • MongoDB 数据库服务搭建(单机)
  • 指定PDF或图片多个识别区域,识别区域文字,并批量对PDF或图片文件改名
  • 【H2O2|全栈】关于CSS(7)CSS基础(六)
  • VMware 虚拟机配置固定 IP
  • MyBatis-Plus自动填充字段
  • Ubuntu 上安装 Miniconda
  • 华为FreeBuds 6i怎么佩戴不容易掉?
  • 人工智能时代,程序员如何保持核心竞争力
  • 柯桥学英语商务口语中老外最爱说的“what‘s up“是什么意思?回答错超尴尬!