我只是对使用<groupId>org.springframework</groupId <artifactId>spring-beans</artifactId>
依赖项感到好奇吗?同样的问题是关于spring-context
。
我没有看到对此模块的明确依赖。它们如何被春天使用?为什么不将它们包括在spring-core
中?
答案 0 :(得分:1)
Spring Framework是分开的,以澄清和最小化其部件的依赖关系,您可以最小化项目所需的依赖关系。您提到的所有三个库都是核心容器的一部分,其中spring-context
依赖于spring-beans
而spring-beans
取决于spring-core
。一些Spring库具有较少的依赖性,如spring-expression
,仅依赖于核心,而不依赖于bean或上下文:
spring-context
+- spring-beans
+- spring-core
spring-expression
+- spring-core
spring-webmvc
+- spring-web
+- spring-context
\- spring-aop
+- spring-context
\- spring-expression
(简化,未显示所有传递依赖关系,当使用maven try mvn dependency:tree
)
所以spring-expression
的维护者只需处理spring-core
。较少的依赖性使责任和可能性更加清晰。并且它阻止您使用“全部”可用,这使得废弃已弃用的API变得更加困难。每个库都有自己的(非Spring)依赖项。如果Spring生态系统中的每个人以及依赖于Spring的任何项目都直接依赖于所有人,那么升级其中任何一个都会变得很难。大多数OpenSource库从'* -all'依赖样式转移到彼此明确依赖的独立模块的原因之一。
有关更多说明,请参阅官方Introduction to the Spring Framework : Core Container。