Что делает каркас Spring легким контейнером? - PullRequest
14 голосов
/ 14 ноября 2011

Когда люди упоминают, что Spring - это легкий контейнер по сравнению с другими фреймворками, они имеют в виду?Что он занимает меньше памяти в системе или у него нет таких операций, как start stop, которые у нас есть для контейнеров EJB, и он не использует специальный контейнер?

Что делает Spring легким контейнером?

Ответы [ 5 ]

8 голосов
/ 14 ноября 2011

Является ли это «легким» или «тяжелым», это все о сравнении.Spring мы считаем легковесным, когда сравниваем с обычным J2EE-контейнером.Он является легковесным в смысле дополнительного объема памяти для предоставляемых средств (например, управление транзакциями, жизненный цикл, управление зависимостями компонентов)

Однако иногда есть другие критерии для сравнения для «веса» контейнера,например, навязчивость в разработке и реализации;

По иронии судьбы, Spring иногда рассматривается как тяжелый контейнер по сравнению с другими контейнерами на основе POJO, такими как Guice и Plexus.

6 голосов
/ 06 апреля 2016

Spring называет себя «легковесным», потому что вам не нужно все Spring, чтобы использовать его часть. Например, вы можете использовать Spring JDBC без Spring MVC .

Spring предоставляет различные модули для разных целей; Вы можете просто ввести зависимости в соответствии с требуемым модулем. То есть вам не нужно загружать или внедрять все зависимости или все JAR-файлы для использования определенного модуля.

enter image description here

Если вы хотите запустить приложение Java EE , вы не можете просто создать небольшое приложение, которое будет работать само по себе. Для запуска приложения вам потребуется сервер приложений Java EE , например Glassfish , WebLogic или WebSphere . Большинство серверов приложений представляют собой большие и сложные части программного обеспечения, которые нетривиальны для установки или настройки.

Тебе не нужно такое с Spring. Вы можете использовать внедрение зависимостей Spring, например, в любую маленькую отдельную программу.

6 голосов
/ 14 ноября 2011

Я думаю, что «легкий» - это в основном модное слово.Это значение очень субъективно и основано на контексте.Это может означать «низкий объем памяти», это может быть низкие накладные расходы при выполнении, низкие накладные расходы при запуске.Люди также используют это, чтобы различать некоторый воспринимаемый уровень сложности и / или кривую обучения.В любом случае, это, безусловно, относительно, поскольку не существует определенной точки на любой шкале, где «легкий» становится «тяжелым» в терминах «веса».

Лично я считаю это опасным словом, поскольку оно не имеет реальногоизмеримое значение.Это то, что люди бросают в архитектурные предложения, чтобы усилить раздел «про» определенной платформы, которую они все равно хотят использовать.Если вы видите или слышите, как он используется в любой такой ситуации, это прекрасная возможность спросить «что это значит?».Если вы получаете гневный или разочарованный ответ (в сочетании с закатыванием глаз и тряской головы), это означает, что человек определился с определенной архитектурой, но ему не удалось сформулировать для этого последовательные или объективные причины.

РЕДАКТИРОВАТЬ: не уверен, что я бы также классифицировал весну как «контейнер», но это аналогичное обсуждение яблок и апельсинов.Я бы назвал это рамками.

2 голосов
/ 23 мая 2014

Spring - легкий вес, потому что другие J2ee-контейнеры, особенно EJB2.1, требуют больше конфигурации, могут иметь много кода, ничего не делать, имеют сложную структуру каталогов для упаковки приложений, в целом это заняло дополнительную память, с другой стороны, пружина минимизирует всеэто вещи. так что легкий вес.

0 голосов
/ 19 декабря 2018

Я думаю, что можно также сказать, что весна - это легкий вес, потому что она использует POJO (простой старый Java-объект). Класс POJO не требует реализации, расширяет специфичные для технологий API (интерфейсы, классы) или не привязан к какой-либо технологии конкретный API

...