



Spring предоставляет множество различных «модулей», и разные программисты будут использовать разные части Spring.
Однако обычно в таком стеке вы увидите, что Spring используется как поставщик
Что ж, Hibernate обрабатывает часть персистентности, JSP обрабатывает ваш графический интерфейс, Struts контролирует поток между страницами / действиями / и т.д., а Spring может управлять всеми вашими bean-компонентами, которые содержат основную бизнес-логику, вместо использования EJB. Кроме того, это может упростить кодирование ваших Hibernate DAO и управление транзакциями. Вместо того, чтобы кодировать свой локатор для получения некоторого EJB через JNDI и все такое, вы можете просто получить Spring ApplicationContext и запросить нужный bean-компонент. Все компоненты, определенные в Spring, могут быть связаны между собой. Если вам нужно подключить один из ваших bean-компонентов к внешнему EJB через JNDI, вы можете сделать это даже без какого-либо кода (Spring предлагает прокси-объект JNDI, который получает ссылку, которую вы ему даете, и возвращает ее как объект с указанным вами интерфейсом). Это может помочь вам упростить модульное тестирование всех этих bean-компонентов и изменить конфигурацию, ничего не перекодируя; вы можете использовать один из Spring PlatformTransactionManager для управления источником данных или указать его JTA-менеджеру J2EE-контейнера; определите свой собственный источник данных в пуле или используйте источник данных вашего контейнера, опубликованный через JNDI, и т. д.
Хорошо бы добавить;
(Представления и контроллеры) Struts за его обширные функции JSP с тегами Struts и функциями обработки веб-запросов.
(Управление сервисами и приложениями) Spring для обработки уровней ORM и сервисов с его отличными инъекциями зависимостей и т. д.
(ORM с независимостью от db) Hibernate для хорошо зарекомендовавшей себя ORM