繁体   English   中英

了解spring 4(spring-context)maven依赖

[英]understanding spring 4 (spring-context) maven dependency

我刚刚开始学习spring,我想使用4.0.4.RELEASE版本 - 它实际上是maven存储库提供的最新版本,所以我的问题在这里:如果我添加这样的依赖:

        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.4.RELEASE</version>

-it自动将所有“基本”模块(如context,core,aop,beans,expression)添加到我的项目中,但是例如,如果我添加这样的依赖:

    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.0.4.RELEASE</version>

-it只会将spring-core jar文件添加到我的项目中,任何人都可以解释为什么它是这样的吗? 因为我正在从教程和教程中学习,这个人添加了这两个依赖项 - > spring-core和spring-context,为什么他这样做了? 他应该只添加spring-context依赖,结果会是一样的,任何人都可以解释一下吗? 谢谢 :)

您需要了解的是Maven处理传递依赖

在你的情况下, spring-context依赖于spring-core ,因此当你在pom.xml声明spring-context时,Maven将自动解析spring-core传递依赖(这样你就不需要声明你的依赖关系了)依赖性等)。

spring-core没有自己的Spring依赖项。 这就是为什么当你在它上面使用它时,没有其他的Spring依赖项被添加到类路径中

您可以使用Maven 依赖项插件轻松检查项目的依赖关系树

另外,你可以在它的Maven中心页面(如果存在:)中看到每个模块的依赖关系。 是相关的页面spring-context

最后一点,你所遵循的教程的作者不需要添加spring-core ,这可能只是一个疏忽。 声明spring-core是一种冗余,只要依赖项的版本同步,就不会产生问题。

它只会将spring-core jar文件添加到我的项目中,任何人都可以 解释为什么它是这样的吗?

它不仅添加了spring-core JAR文件,而且还添加了此处定义的所有依赖项。 (请参阅“ 此工件取决于... ”部分。

Spring团队将他们的框架划分为一致的模块,因此可以通过不需要所有弹簧束的特定项目来正确使用它。 有些库不依赖于所有上下文JAR,只在核心上。

目前,目前的稳定版本是4.0.5。

因为我正在从教程和教程中学习,这个人添加了 这两个依赖项 - > spring-core和spring-context,为什么他 这样做了? 他应该只添加spring-context依赖,结果会是 一样的,任何人都可以解释一下吗?

是的,结果几乎是一样的。

如果已经声明了spring-context ,则不需要声明spring-core依赖项, 因为上下文已经依赖于核心

除非本教程的作者正在为依赖性管理构建父POM(可能他将拥有一个仅依赖于spring-core的模块),否则他不应该添加该依赖项,因为它可能会在POM的未来更新中发生冲突。 应删除对核心的声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM