openFeign 多模块调用失败问题

第一次做一个完整的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.mfbz.cn/a/321009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

phpinfo和php -m 加载的php.ini不一致

目的: 将phpinfo在web中展示的php.ini和在命令行中展示的php.ini加载路径设置一致。 原本的php.ini加载路劲是: /usr/local/lib/php.ini 解决思路: (1)which php 查看服务器加载的php的位置,这里原来是&a…

win10 安装配置 Rust 环境和简单使用

文章目录 安装 Rustup基本命令hello wrold使用 cargo 创建项目构建并运行项目发布 最近几年,Rust 因其卓越的内存安全性和并发性能备受关注。不仅连续七年获得 StackOverflow 最受开发者喜爱的语言榜榜首,也在越来越多知名公司内部使用,比如&…

通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

原创/朱季谦 本文主要想通过动手实际分析一下是如何通过DNS服务器来解析域名获取对应IP地址的,毕竟,纸上得来终觉浅,绝知此事要躬行。 一、域名与IP地址 当在浏览器上敲下“www.baidu.com”时,一键回车,很快&#x…

分布式链路追踪专栏,Spring Cloud Sleuth:分布式链路追踪之通信模型设计

Spring Cloud Sleuth 赋予分布式跟踪的 Spring Boot 自动配置的一键解决方案。Spring Cloud Sleuth 是基于 Brave 的封装,也是很多公司采用开源加自研的最佳解决方案。 那么从作为架构师或者技术专家如何去借鉴优秀框架的设计理念和思想,本次 Chat 将开…

肯·汤普逊 :我心目中的神,好像真正无敌之上的大佬都对C++提出了批判!大佬们的思想像红太阳太耀眼,常人不能直视

肯尼斯蓝汤普逊(英语:Kenneth Lane Thompson,1943年2月4日—),小名肯汤普逊(英语:Ken Thompson),美国计算机科学学者和工程师。黑客文化圈子通常称他为“ken”[1]。在贝尔…

为什么很多公司选择不升级JDK版本,仍然使用JDK8?

在讨论为什么许多公司选择不升级JDK版本,而继续使用JDK 8时,我们需要从多个角度来分析这个问题。以下是根据您提供的背景信息进行的一些分析和真实案例。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术…

test Symbolic Execution-03-Soot - A Java optimization framework

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试(Fuzz Testing) Soot 重要…

【linux】awk的基本使用

awk是shell中一个强大的文本处理工具,被用于处理文本和数据 当你心中默念想要使用类似于 处理某一行,处理某一列 的文本 的功能时,就是awk登场的时候了 举个简单的例子是,当我们想知道自己的所有网卡的名字时,可以用i…

繁花的范总-UMLChina建模知识竞赛第5赛季第3轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题&am…

OpenHarmony—Linux之系统调用

Linux之系统调用 这里我们只讨论: 硬件: Arm64系统: Linux系统 (Kernel-5.15-rc1)高级语言: C (glibc-2.34)模式: 64位 (即未定义CONFIG_COMPAT) 2、什么是系统调用 …

主键(设置/删除方法,复合主键),唯一键,主键和唯一键的应用差异,自增长字段(如何实现,查看上次的值),外键(引入,外键约束)

目录 主键(primary key) 介绍 作用 设置主键 建表前 建表后 复合主键 介绍 示例 删除主键 唯一键(unique) 介绍 意义 示例 建表 主键 唯一键 插入数据示例 主键和唯一键的应用差异 主键 唯一键 索引 auto_increment 介绍 示例 自动插入 手动插入 …

电子签章系统,怎么做到大量文件自动电子签章?

在当今信息爆炸的时代,海量文件的签署管理成为各行业面临的挑战之一。电子签章系统的出现,为解决这一问题提供了有效途径。本文将探讨电子签章系统如何实现海量文件自动签章,提高工作效率并确保安全性。 钉钉、企微、飞书、OA、CRM、ERP等&a…

K8S API访问控制之RBAC利用

前言 K8S对于API的访问安全提供了访问控制,主要为4个阶段,本文为第二个阶段——鉴权的RBAC。RBAC是基于角色的访问控制,使用kubeadm安装集群1.6版本以上的都默认开启了RBAC。本文主要研究集群可能存在的利用点及相对应的利用手法。 API访问…

图像的初识

一、图像的数组表示 RGB能够构成人眼所能识别的所有颜色。 二、图像的变换 Example: img.shape Out[329]: (512, 768, 3) img.dtype Out[330]: dtype(uint8) #补值变换 shift_temp_img [255,255,255] - img shift_img Image.fromarray(shift_temp_img.astype(ui…

机器学习~从入门到精通(二)线性回归算法和多元线性回归

为什么要做数据归一化 一、数据归一化: 1.最值归一化 2.均值方差归一化import numpy as npX np.random.randint(1,100,size100) X X.reshape(-1,2) X.shape X np.array(X,dtypefloat) X[:,0] (X[:,0]-np.min(X[:,0]))/(np.max(X[:,0])-np.min(X[:,0])) X[:,1]…

class_4:car类

#include <iostream> using namespace std; class Car{ public://成员数据string color; //颜色string brand; //品牌string type; //车型int year; //年限//其实也是成员数据&#xff0c;指针变量&#xff0c;指向函数的变量&#xff0c;并非真正的成员函数void (*…

强化学习应用(六):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用

SQL sugar 中控制器直接判断数据是否存在 首先确保你的Service层继承的表名 控制器中使用IsAny进行根据条件判断数据是否存在

Redis命令 - Sets命令组常用命令

Set集合&#xff0c;无序&#xff0c;一堆不重复值的组合。利用redis提供的set数据结构&#xff0c;可以存储一些集合性的数据。 使用场景&#xff1a;例如&#xff0c;实现如共同关注、共同喜好、二度好友等 1、SADD key member [member …] 向集合中添加一个或者多个成员 …

Windows Server调整策略实现999999个远程用户用时登录

正文共&#xff1a;1234 字 23 图&#xff0c;预估阅读时间&#xff1a;2 分钟 上篇文章中&#xff08;Windows Server 2019配置多用户远程桌面登录服务器&#xff09;&#xff0c;我们主要介绍了Windows Server 2019在配置远程桌面时&#xff0c;如何通过3种方式创建本地用户账…