Spring Framework разделен для уточнения и минимизации зависимостей их частей, и вы можете свести к минимуму необходимые зависимости вашего проекта. Все три библиотеки, которые вы упомянули, являются частью основного контейнера, где spring-context
зависит от spring-beans
и spring-beans
зависит от spring-core
. Некоторые библиотеки Spring имеют меньше зависимостей, такие как spring-expression
только в зависимости от ядра, но не на бобах или контексте:
spring-context
+- spring-beans
+- spring-core
spring-expression
+- spring-core
spring-webmvc
+- spring-web
+- spring-context
\- spring-aop
+- spring-context
\- spring-expression
(упрощено, не показывая всю транзитивную зависимость, при использовании Maven попробовать mvn dependency:tree
)
Так сопровождающие spring-expression
имеет дело только с spring-core
. Меньшие зависимости делают обязанности и возможности более ясными. И это мешает вам использовать «все», что облегчает избавление от устаревших API. Каждая из библиотек имеет собственные (не Spring) зависимости. Чтобы обновить любой из них, стало бы тяжело, если бы все в весенней экосистеме и любой проект в зависимости от Весны просто напрямую зависели бы от всех. Одна из причин, почему большинство библиотек OpenSource отошли от «* -вса» стиль зависимости отделить модули с четкой зависимостью друг от друга.
Для более подробного объяснения смотрите также официальный Introduction to the Spring Framework : Core Container.