springboot整合openfeign

embedded/2024/9/25 6:08:55/

文章目录

    • 准备
    • 一、引入必要依赖
    • 二、写一个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方法为

java">@RestController
@RequestMapping("/product")
public class ProductController {@GetMapping("/list")public String list(){return "product list";}
}

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

java">@FeignClient(value = "product-service",path = "/product")
public interface IProductClient {@GetMapping("/list")public String list();
}

2.2 开启Feign客户端功能

java">@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,并调用方法

java">@RestController
@RequestMapping("/order")
public class OrderController {@AutowiredIProductClient 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.ppmy.cn/embedded/116479.html

相关文章

【计算机网络 - 基础问题】每日 3 题(二十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

01_WebRtc_一对一视频通话

文章目录 通话网页的设计客户端实现Web的API 服务端实现 2024-9-20 很久没有写博客啦&#xff0c;回顾总结这段时间的成果&#xff0c; 写下博客放松下&#xff08;开始偷懒啦&#xff09;主要内容&#xff1a;实现网页&#xff08;html&#xff09;打开摄像头并显示到页面需要…

线程池和JUC

1. 线程池 1.1 线程状态介绍 当线程被创建并启动以后&#xff0c;它既不是一启动就进入了执行状态&#xff0c;也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢&#xff1f;Java中的线程 状态被定义在了java.lang.Thread.Stat…

Springboot Mybatis对数据库增删改查

Springboot中&#xff0c;用Mybatis对数据库进行增删改查 Mapper类 package com.wzb.MybatisExercise20240924;import com.wzb.Pojo20240924.Emp; import org.apache.ibatis.annotations.*;Mapper public interface EmpMapper {// 根据id查询数据Select("select * from e…

交换机和路由器的区别

目录 工作层次 数据转发依据 域的处理 功能 工作层次 交换机&#xff1a;工作在OSI模型的第二层&#xff0c;即数据链路层&#xff0c;通过MAC地址表来识别和转发数据帧。 路由器&#xff1a;工作在OSI模型的第三层&#xff0c;即网络层&#xff0c;使用IP地址来确定数据包…

微服务之网关

1.网关需要的依赖 <!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--nacos discovery--><dependency><groupId>com…

WordPress 要求插件开发人员进行双因素身份验证

全球超过40%的网站由 WordPress 提供支持&#xff0c;其庞大的插件和主题生态系统在全球范围内提供了灵活性和定制性。然而&#xff0c;这种受欢迎程度也使其成为网络攻击的主要目标。 WordPress 将为所有插件和主题开发人员引入强制性双因素身份验证 (2FA)&#xff0c;以应对…

如何修改音频的音量增益

一、前言 在开发音频相关的功能&#xff08;比如说语音通话、播放音乐&#xff09;时&#xff0c;经常会遇到音量太小的问题&#xff0c;这时候就需要我们对原始数据进行处理。本文将介绍如何通过修改原始音频数据来增加增益&#xff0c;本文包含如下内容&#xff1a; 1.音频数…