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

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

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

Ответ 1

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

Однако иногда существуют другие критерии для сравнения "веса" контейнера, например. навязчивость в проектировании и реализации; предоставляемые услуги и т.д.

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

Ответ 2

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

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

EDIT: не уверен, что я бы классифицировал spring как "контейнер", но это похоже на обсуждение яблок и апельсинов. Я бы назвал это рамкой.

Ответ 3

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

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

enter image description here

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

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

Ответ 4

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

Ответ 5

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