openFeign 多模块调用失败问题

news2025/1/22 21:47:29

第一次做一个完整的SpringCloud微服务项目,踩了好多好多坑,都记录下来!

openFeign 多模块调用失败 排错第一阶段

创建一个openfeign服务,并把它注册到nacos上去
然后A模块通过Feign调用B模块
但是我在A模块实现AdminArticleServiceFeignClient这个接口,报错:

在这里插入图片描述
后面我查找这个问题终于找到了答案, 在A模块的启动类上加上

@EnableFeignClients(basePackages = "com.XXXX.feign.api")

com.XXXX.feign.api, 这个路径就是我openfeign的接口包路径,
为什么会这样?

当你在 A 模块的启动类上使用 @EnableFeignClients(basePackages = “com.headnews.feign.api”) 时,Spring Cloud Feign 会扫描指定包及其子包下的所有 Feign 客户端接口,然后自动创建这些接口的代理对象。
如果你没有在启动类上使用 @EnableFeignClients 注解,Feign 将不会扫描和创建 Feign 客户端的代理对象,导致在 A 模块中找不到 AdminArticleServiceFeignClient。
和你单模块使用openfeign一样,只是在使用多模块的时候没适应,一下子没反应过来
简而言之,@EnableFeignClients 注解告诉 Spring Cloud Feign 哪些包中包含 Feign 客户端接口,以便进行扫描和代理的创建。

openFeign 多模块调用失败 排错第二阶段

这第二阶段 ,真的很tm折磨人,让我有点想放弃这个行业的冲动!

A模块由于要调用openfeign的服务,所以A的pom.xml上有依赖openfeign的服务,然后我在启动的时候莫名其妙的报错,说我的数据源有问题

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active)

我起初认为是openfeign上的依赖有依赖到需要数据库连接配置的服务,结果openfeign服务正常启动反而是A模块的服务启动失败
我在推测是不是A模块和openfeign服务模块的依赖起冲突了,由于这个问题已经弄了很久了,我不想在这个问题在浪费时间了, 我就索性把openfeign服务模块的所有依赖全部排除!
结果还是报一模一样的错 , 最后我又查了半个小时, 没办法我妥协了向bug妥协,我选择给openfeign服务模块的配置文件加上数据库连接信息,我想这下总没有问题了吧,postman测试,gateway报错(因为我的网络请求要统一经过gateway),gateway报错说找不到请求链的服务。嗯???找不到服务?

网关的职责说简单一点不就是鉴权和统一管理吗,没有报鉴权的错,说我请求链出问题,找不到服务, 那只能是gateway转发出问题了, 在去单独调用A模块的服务,结果好家伙A服务tm消失了
在这里插入图片描述
开始汗流浃背了, A服务搁那跑着呢,你和我说这个localhost+端口都访问不出来,开始蒙圈了,排错到这里整个人已经开始怀疑人生了
开始各种查依赖,各种查tomcat冲突,什么都查,瞎几把,结果在我准备放弃,转行的时候,发现这个A服务的端口怎么tm变成openfeign的端口了???
在那一瞬间我逐渐理解了一切, 我说怎么报错数据源错误,原来是引导属性源给我找错了, A模块的引导属性源给我找到openfeign模块上去了,通了为什么我在openfeign上加数据库配置就不报错了,但是找不到A模块的服务,原来根本那个时候就不存在A模块, 那么是什么原因导致的呢?
很简单,我的tm openfeign服务模块的配置文件是:application.yml,而我的A服务模块,因为走了nacos配置中心所以,A模块的配置文件是:bootstrap.yml
所以,要么我在A模块底下搞一个:application.yml, 要么我把openfeign服务模块的配置文件名称改为:bootstrap.yml就OK了
好了整个排错就到这里结束了

有没有懂哥解释一下为什么,spring会找到两个引导源啊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1383977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OSPF : 区域 / 为什么非骨干互访需要经过骨干

概述 OSPF系列第二篇 , 今天来围绕着区域这个概念展开写一篇博客 分区背景 先来讨论一下技术背景 , 也就是为什么要分区 ? 所有设备都在一个区域不行吗 会有什么问题呢 . 首先明确一个知识点 : 正常状态下一个区域内的所有设备的LSDB都是一样的.区域内的路由器必须为所属的…

小程序基础学习(请求封装)(重点,核心)

目录 首先: 封装一个request请求的js文件,用的是Promise 然后: 请求编写 原理:首先在页面加载完成以后发送一次请求数据,由于请求的数据会反复使用,直接把他抽离到外面,以后直接调用。在使用a…

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目 MetaGPT是基于大型语言模型(LLMs)的多智能体写作框架,目前在Github开源,其Start数量也是比较高的,是一款非常不错的开源框架。 下面将带你进入MetaGPT的大门,开启MetaGPT的体验之旅。…

使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片

问题描述: 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片 问题分析: 这个是由于这个app没有申请手机端的 媒体文件访问权限,所以读取不了 解决:(我的是Android 10,新版…

数据结构学习之对单向链表进行快速高效的排序(排序链表)

实例要求:1、给定一个链表的头结点 head ,请将其按升序排列并返回排序后的链表 ;2、链表中节点的数目的范围为 [0, 5 * 104] ;实例分析:1、引入qsort函数和自定义cmp函数解决问题;2、借助自定义指针作为中间…

Android Studio下载gradle反复失败

我的版本:gradle-5.1.1 首先检查设置路径是否正确,参考我的修改! 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载,我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

jenkins-cl参数化构建

pipeline片段(对应jenkins-cli -p参数的BRANCHdevelop) parameters {string(name: BRANCH, defaultValue: master, description: Enter the branch name)}stages {stage(Get Code) {steps {script {def branch params.BRANCHcheckout scmGit(branches: …

【Python】使用pyinstaller打包为Windows平台的xxx.exe方法步骤

pyinstaller 是一个用于将 Python 代码打包成独立可执行文件的工具,它可以将 Python 代码打包成 Windows、Linux、Mac 等平台的可执行文件,方便用户在不同环境中运行。 pyinstaller用法: 1.安装pyinstaller库,这里以PyCharm环境为…

Git与VScode联合使用详解

目录 Git与VScode联合使用 方式一 1. 用vscode打开文件夹,如图点击初始化仓库,把此仓库初始为git仓库。 2. 提交文件到本地仓库 3. vscode与github账号绑定 4. 在github中建立远程仓库 5. 本地仓库与远程仓库绑定 方式二 1. 在github上建立远程仓…

Nginx的安装配置和使用

最近有好几个地方用到了nginx,但是一直还没时间记录下nginx的安装、配置和使用,这篇文章可以将这块内容整理出来,方便大家一起学习~ 安装 安装是相对简单一些的,直接使用yum即可。 yum install -y nginx 默认安装位置在/usr/sb…

flutter 打包IOS及常用配置

修改APP名称 项目名字配置是在 ios/Runner/Info.plist 文件中的 dict 下的 CFBundleName testapp 。如下图所示: String里面就可以修改名称 修改项目 (testapp)的 Logo 图标 iOS 项目 Logo的配置是在 ios/Runner/Assets.xcassets/AppIcon.appiconset 文…

单表的查询练习

一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 显示所有职工的基本信息。 mysql8.0 [chap03]>select * from worker; 查询所有职工所属部门的部门号,不显示重复的部门号。 mysq…

mysql进阶-索引基础

目录 1. 概念-索引是什么? 2. 索引的数据结构(索引模型) 2.1 二分查找: 2.2 二叉查找树(BST Binary Search Tree): 2.3 平衡二叉树(AVL Tree Balanced binary search trees) 2.4 多路平衡查找树(B Tree Balanced…

青动CRM-E售后 售后工单CRM系统 erp系统 带前端小程序全开源可二开

应用介绍 一款基于FastAdminThinkPHP和uniapp开发的CRM售后管理系统,旨在助力企业销售售后全流程精细化、数字化管理,主要功能:客户、合同、工单、任务、报价、产品、库存、出纳、收费,适用于:服装鞋帽、化妆品、机械机…

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字,是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。 关键字 class ,这个关键字的用途是…

test Property-based Testing-04-junit-quickcheck

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) junit-quickcheck:基于 JUnit 风格的属性驱动测试库 junit-qu…

瑞_Java开发手册_(一)编程规约

文章目录 编程规约的意义(一)命名风格(二)常量定义(三)代码格式(四)OOP 规约(五)日期时间(六)集合处理(七)并发…

「Vue3面试系列」Vue 3.0中Treeshaking特性有哪些?举例说明一下?

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除…

基于JavaWeb的酒店管理系统

基于JavaWeb的酒店管理系统 文章目录 基于JavaWeb的酒店管理系统系统介绍技术选型成果展示源码获取账号地址及其他说明 系统介绍 基于JavaWeb的酒店管理系统是为酒店打造的管理平台,其主要功能有管理员登陆、客房预订、客房入住、房间管理、数据查询(预订单查询、入…

差分算法模板

差分算法模板 一维差分一维insert函数(构造差分数组和实现区域加数操作)一维差分模板题 二维差分二维insert函数(构造差分数组和实现区域加数操作)二维差分模板题 一维差分 差分主要是计算出某个区域段的数分别加上一个数 先给定一个原数组a:a[1], a[2], a[3], a[n]…