java - 有必要在 Spring 项目中同时使用 spring-core 和 spring-context 依赖吗?

标签 java spring maven

我是 Spring 的初学者,我正在尝试通过阅读散布在 Internet 上的一些代码来学习它。当我查看这些代码的 pom.xml 时,我几乎总是看到人们并排使用“spring-core”和“spring-context”作为该项目的附加依赖项。当我查看依赖层次结构时,我看到 spring-core 已经在 spring-context 中。

所以我的问题是:是否有必要同时使用两者? “spring-context”中的“spring-core”和作为单独 Artifact 的“spring-core”有区别吗?

最佳答案

这称为传递依赖。如果您不声明 spring-core,您仍然可以获得它,因为 spring-context 声明了它。

今天,无论您是否声明 spring-core,您的代码都可以正常工作,因为借助传递依赖机制,您无论如何都能得到它。所以这是一个最佳实践的问题,而不是它是否有效。

要问的问题是,为什么我需要spring-core?

  • 如果您的代码不直接引用它,那么您就不需要它,即使 spring-context 需要。因此,让 spring-context 负责声明它需要 spring-core。不要自己申报。
  • 如果您的代码确实直接引用了 spring-core 中的某些内容,那么您确实需要它,无论 spring-context 是否需要它。也许在未来的版本中,spring-context 将不再依赖于 spring-core。因此,您应该声明 spring-core。

一句话,您应该显式声明您自己使用的那些依赖项,即使它们也是传递引入的。

在玩具项目上并不重要。但它使大型项目的长期维护变得容易得多。

编辑:spring-core 和 spring-context 联系紧密,以上建议无关紧要。它确实很重要的一个常见情况是,当您拥有依赖于日志包 L 的库 A 时。如果您自己的代码使用 L,那么您最好显式声明该依赖性,因为 A 可以很容易地切换将来使用不同的日志记录包。另一方面,spring-context 不太可能为 spring-core 的功能切换到不同的提供者......

关于java - 有必要在 Spring 项目中同时使用 spring-core 和 spring-context 依赖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674175/

相关文章:

java - Spring OAuth2 自定义认证管理器 ClassCastException

java - Spring @Value 只使用默认值

java - Maven构建多模块项目成功,Eclipse报错

java - MVN一:convert don't work?

java - 如何自动化 Google 主页自动建议?

java - 我应该在哪里放置 XSD 文件以用于 JAXB 代码生成和 XML 验证

java - Spring Web 服务不会读取 JSON

java - 使用eclipse和maven的不同版本的war文件

java - hibernate 搜索,现有数据不可搜索

java - 无法在 myeclipse 上运行 Web 应用程序