Maven模块间循环依赖的解决方案以及分析
Maven模块间循环依赖的解决方案以及分析
问题重现
在coding中Maven各个模块之间经常会有互相引用的问题,当A模块中需要用B模块的功能,而B模块很有可能也需要用到A模块中的功能,这样就会存在A模块中引入了B,而B模块又引用了A,项目启动时maven就会报错
报错原因分析
因为Maven结构是自下而上的,被依赖的包将会提前于使用其的包被maven打包,因此A引用了B,B引用了A,Maven不知道要将哪个包提前打包,就会报错。
具体分析
与其说是Maven循环依赖的问题,更不如说是项目结构存在问题,庞大如Spring都不存在循环依赖的问题,为什么我们自己的项目会存在这种低级错误呢,归根结底是因为对于IOC控制反转理念的理解不够到位,或者说对于IOC解决的问题以及优点理解不全面,IOC相信大家都耳熟能详,控制反转,我认为控制反转最精妙的就是将传统思维中的依赖于某个具体实现 改变为 依赖于其抽象,回想我们所使用的各种Map,各种List,是否都是
List a = new ArrayList<>();
Map b = new HashMap<>();
这无一不都是IOC控制反转的体现
解决方案
综上就可以很好的解决Maven循环依赖的问题
将接口与实现impl分模块处理,A impl模块依赖B模块的接口抽象模块,B impl模块依赖A模块的接口抽象模块,将具体实现交由spring处理,同时,entity、vo、dto等实体类应在接口模块中,如下图所示
Maven模块间循环依赖的解决方案以及分析相关推荐
- maven上解决循环依赖、又不想新加第三模块的方法
maven上解决循环依赖.又不想新加第三模块的方法 参考文章: (1)maven上解决循环依赖.又不想新加第三模块的方法 (2)https://www.cnblogs.com/yuan951/p/89 ...
- 记因循环依赖的解决方案
记因循环依赖的解决方案 参考文章: (1)记因循环依赖的解决方案 (2)https://www.cnblogs.com/sanshengshui/p/11839882.html (3)https:// ...
- Spring构造器注入循环依赖的解决方案及原理探索
前言 我们都知道Spring解决了Setter注入或者Field注入的循环依赖问题,依靠的是三个Map(earlySingletonObjects.singletonFactories.singlet ...
- Maven找不到依赖终极解决方案
离线网络环境中拷贝maven仓库到离线机器,使用maven加载项目,maven编译jar包找不到或者提示jar包信息不可用,现提供以下本人解决的方式,亲测可用 基础解决方案 常规 idea的 mave ...
- 02-Maven高级-分模块开发、依赖传递、聚合、继承(SpringBoot的部分底层原理)、多模块开发(环境切换)、Nexus私服搭建与使用
文章目录 学习目标 一.分模块开发与设计 1. 分模块开发的意义 问题导入 模块拆分原则 2. 分模块开发(模块拆分) 问题导入 2.1 创建Maven模块 2.2 书写模块代码 2.3 通过mave ...
- JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 循环依赖解决方式
JS 模块化: CommonJS 与 ESM(ECMAScript Module) 的引用机制比较 & 循环依赖解决方式 文章目录 JS 模块化: CommonJS 与 ESM(ECMAScr ...
- es6 依赖循环_探索 JavaScript 中的依赖管理及循环依赖
我们通常会把项目中使用的第三方依赖写在 package.json 文件里,然后使用 npm .cnpm 或者 yarn 这些流行的依赖管理工具来帮我们管理这些依赖.但是它们是如何管理这些依赖的.它们之 ...
- 解鞍卸甲——手写简易版Spring框架(终):使用三级缓存解决循环依赖问题
什么是三级缓存 按照目前我们实现的 Spring 框架,是可以满足一个基本需求的,但如果你配置了A.B两个Bean对象互相依赖,那么立马会抛出 java.lang.StackOverflowError ...
- 详解Spring的循环依赖
本篇博客为学习哔哩哔哩中的黑马程序员的spring复习视频的学习笔记,仅供参考. 目录 代理的创建时机 aspectj与advisor的关系 自动后置代理处理器 循环依赖 set注入导致的循环依赖以及 ...
最新文章
- Debug类和Trace类的区别
- 减少训练成本的一个方法
- Error:Can’t find import 2508 in coredll.dll问题解决
- PHP高性能输出UNICODE正则汉字列表 汉字转拼音多音字解决方案 搜索引擎分词细胞词库更新 搜狗词库提取TXT...
- oracle 中DATETIME与TIMESTAMP区别
- spring配置dataSource:DriverManagerDataSource
- windows服务器安装nginx
- mysql c#开发库_c# 开发+MySql数据库
- 5G的基站覆盖范围300米,今后边远地区的手机通话怎样保证?
- linux IPv4报文处理浅析
- Java 基本语法----数组
- u深度制作win10系统安装盘教程
- 又一程序员猝死...
- 阿里云部署vmware报错
- 每日一词20190308——大地水准面(geoid)
- Cardboard Unity SDK Reference 翻译版
- ps,pr,3Dmax软件使用经验
- xpanx原理解析 | 只要 3 秒!抖音视频无水印下载
- 通信机制之异步通信和同步通信
- 19 个接私活平台,有技术就有钱