1.什么是依赖传递
比如,我们的项目依赖spring-webmvc.jar,而spring-webmvc.jar依赖spring-beans.jar.所以spring-beans.jar也会出现在我们的项目中.这种现象我们称为传递依赖.
2.依赖冲突的解决
我们会发现这两个 jar 包同时都依赖了 spring-beans,spring-webmvc 依赖 spirng-beans-4.2.4,spring-context 依赖 spring-beans-5.0.2,但是发现spirng-beans-4.2.4 加入到工程,而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。解决依赖冲突有以下原则:
2.1第一声明者优先原则
如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2
2.2路径近者优先原则
如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传
递来的 spring-beans,因为自己直接在 pom 中定义 spring-beans 要比其他依赖传递过来的路
径要近。
2.3排除依赖
2.4锁定版本
注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本
的依赖则需要单独添加<dependencies></dependencies>标签,如下:
上边添加的依赖并没有指定版本,原因是已在<dependencyManagement>中锁定了版本,
所以在<dependency>下不需要再指定版本。