springcloud+openFeign单元测试解决初始化循环依赖的问题
项目使用了 OpenFeignFeign 在初始化时会试图获取 Spring MVC 的相关配置同时Spring MVC 的自动配置WebMvcAutoConfiguration又在等待 Feign 或其他 Bean初始化完成。这会导致死锁/循环依赖导致 Context 启动失败。前提是需要使用到上下文如注入别的Bean调用服务等测试环境会尝试加载所有自动配置包括 Feign 和 WebMvc而它们在没有完整运行环境如 Nacos 服务发现时容易打架。最终解决办法webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORTSpringBootTest(classesXxxApplication.class,webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)webEnvironment SpringBootTest.WebEnvironment.RANDOM_PORT这是 Spring Boot 测试中的一个关键配置参数它的核心含义是“请启动一个真实的、嵌入式的 Web 服务器如 Tomcat并让它监听一个随机的、未被占用的端口。”从对比和原理两个角度来看特性默认模式 (不写参数)RANDOM_PORT 模式对应枚举WebEnvironment.MOCKWebEnvironment.RANDOM_PORT服务器状态❌ 不启动真实的 Tomcat/Jetty✅ 启动真实的嵌入式服务器网络请求无法通过 HTTP 访问 (只能用 MockMvc)可以通过http://localhost:随机端口真实访问Bean 初始化模拟 Servlet 环境部分 Web Bean 延迟或特殊初始化完整模拟生产环境所有 Web Bean 按真实顺序初始化端口号无端口随机分配 (如 54321, 61092)避免冲突主要用途纯单元测试速度快集成测试更接近真实运行环境涉及循环依赖和Feign Client的问题使用该配置会要求Spring Boot 先启动真实的 Web 服务器。服务器启动过程强制要求所有 Web 相关的底层设施包括 mvcResourceUrlProvider必须立即、完整地初始化。确保所有 Bean 按正确的生产顺序初始化从而避开奇怪的循环依赖 Bug。如果需要在测试代码里知道这个端口是多少可以注入AutowiredprivateLocalServerConfigserverConfig;// 或者使用 Value(${local.server.port})Value(${local.server.port})privateintport;

相关新闻

Flutter 组件 stubble 适配鸿蒙 HarmonyOS 实战:轻量级模板引擎,构建纳秒级动态 UI 渲染引擎

Flutter 组件 stubble 适配鸿蒙 HarmonyOS 实战:轻量级模板引擎,构建纳秒级动态 UI 渲染引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 组件 stubble 适配鸿蒙 HarmonyOS 实战:轻量级模板引擎,构建纳秒级动态 UI 渲染引擎 前言 在鸿蒙(OpenHarmony)生态强势切入如新闻…

2026/5/17 11:55:35 阅读更多 →
最新版vue3+TypeScript开发入门到实战教程之学会vue3第一步必是setup语法糖

最新版vue3+TypeScript开发入门到实战教程之学会vue3第一步必是setup语法糖

setup 概述 在vue3中,若没有学好setup函数,后面学习vue3将会越学越乱。 setup是一个函数,它在vue3是一个新的配置项,是组合式语法 (Composition API)表演的舞台,组件中所用的属性、计算属性、方法、监视等等&#xff…

2026/5/17 11:55:35 阅读更多 →
基于麻雀搜索算法优化随机森林(SSA-RF)的时间序列预测 采用交叉验证抑制过拟合问题 mat...

基于麻雀搜索算法优化随机森林(SSA-RF)的时间序列预测 采用交叉验证抑制过拟合问题 mat...

基于麻雀搜索算法优化随机森林(SSA-RF)的时间序列预测 采用交叉验证抑制过拟合问题 matlab代码,时间序列预测总让人又爱又恨,特别是当传统随机森林遇到高噪声数据时,模型容易在训练集上表现完美却在测试时翻车。今天咱们来点硬核的——用麻雀…

2026/5/17 11:55:34 阅读更多 →

最新新闻

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过软件无法启动、游…

2026/7/4 1:41:21 阅读更多 →
UE5多线程编程与FQueuedThreadPool实战指南

UE5多线程编程与FQueuedThreadPool实战指南

1. UE5多线程编程基础与FQueuedThreadPool概述在UE5游戏开发中,多线程编程是提升性能的关键技术之一。虚幻引擎提供了完善的多线程框架,其中FQueuedThreadPool作为核心线程池实现,为开发者管理并发任务提供了便利。与直接创建线程相比&#x…

2026/7/4 1:39:20 阅读更多 →
Unity Addressables内存管理优化实战指南

Unity Addressables内存管理优化实战指南

1. 内存管理在Addressables中的核心地位在Unity项目中使用Addressables资源管理系统时,内存管理是决定项目性能和稳定性的关键因素。不同于传统的Resources加载方式,Addressables采用异步加载和引用计数机制,这给内存管理带来了新的挑战和优化…

2026/7/4 1:37:19 阅读更多 →
FBX导入Unreal缺失平滑组问题的解决方案

FBX导入Unreal缺失平滑组问题的解决方案

1. 问题背景与现象解析最近在将FBX格式的3D模型导入Unreal Engine时,遇到了一个典型警告:"[ue SkeletalMesh] 在FBX文件中未找到这个网格体Mesh_001的平滑组信息"。这个看似简单的提示背后,实际上涉及到3D建模流程中几个关键的技术…

2026/7/4 1:37:19 阅读更多 →
Ubuntu下UE5与AirSim集成开发指南

Ubuntu下UE5与AirSim集成开发指南

1. 项目概述:Ubuntu系统下的UE5与Project AirSim集成方案在Linux生态中部署虚幻引擎5(UE5)与微软开源仿真平台Project AirSim的组合,为自动驾驶、无人机开发等领域提供了高性能的仿真测试环境。不同于Windows平台的"开箱即用…

2026/7/4 1:35:19 阅读更多 →
libgdx游戏UI元素定位与调试实战技巧

libgdx游戏UI元素定位与调试实战技巧

1. libgdx界面元素定位调试实战指南在libgdx游戏开发中,UI元素的精确定位是个看似简单却容易踩坑的环节。我刚接触libgdx时,曾花了两天时间就为了把一个按钮摆到理想位置。经过多个项目实战,我总结出三种不同维度的调试方案,从依赖…

2026/7/4 1:35:19 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻