1.第一声明者优先原则
谁先在pom.xml中申明,就用谁的。跟坐标代码的顺序有关
测试:
添加struts2-spring-plugin(2.3.24)在前,spring-context(4.2.3.RELEASE)在后。
结果
如果将上边struts-spring-plugins和spring-context顺序颠倒,系统将导入spring-beans-4.2.3。
结果:
分析:
由于spring-context在前边以spring-context依赖的spring-beans-4.2.3为准,所以最终spring-beans-4.2.3添加到了工程中。
2.路径近者优先原则
struts2-spring-plugin(2.3.24)跟spring-context(4.2.3.RELEASE)都会添加spring-beans的依赖。Strut2-spring-plugin会引入spring-beans.3.0.5, 而spring-context会引入spring-beans.4.2.3。如果这时我们直接加入新的依赖叫spring-beans.4.2.4.RELEASE
结果:
分析:系统中如果要引入spring-beans,可以有以下方法
Ø 通过引入struts2-spring-plugin,它会引入spring-beans.3.0.5的版本。需要经过的路径为2个节点
Ø 通过引入srping-beans-4.2.3,它会引入spring-beans.4.2.3的版本,需要经过的路径为2个节点
Ø 如果直接引入spring-beans-4.2.4,只需要经过1个节点
因此不管spring-beans.4.2.4的位置在哪,系统始终都是引入spring-beans.4.2.4的版本。