Какую роль выполняет Spring в Struts + Spring + Hibernate?
Какова роль Spring в Struts + Spring + Hibernate?
Ответ 1
Spring предоставляет множество разных "модулей", а разные программисты будут использовать разные части Spring.
Однако, обычно в этом виде стека вы увидите, что Spring используется как поставщик
- Инверсия контейнера управления для инъекции зависимостей
- Абстракция в Hibernate называется "HibernateTemplate"
- Классы Framework для упрощения аспектно-ориентированного программирования
- Поддержка транзакций, часто "декларативно" через контейнер IoC и AOP.
Ответ 2
Ну, Hibernate обрабатывает часть персистентности, JSP обрабатывает ваш графический интерфейс, Struts управляет потоком между страницами /actions/etc, а Spring может управлять всеми вашими beans, которые содержат основную бизнес-логику, вместо использования EJB. Кроме того, он может упростить кодирование вашего Hibernate DAO и управление транзакциями. Вместо того, чтобы закодировать локатор для получения EJB через JNDI и все это, вы можете просто получить ApplicationContext Spring и запросить bean, который вам нужен. Все beans, определенные в Spring, могут быть связаны между собой. Если вам нужно подключить один из ваших beans к внешнему EJB через JNDI, вы даже можете сделать это без какого-либо кода (Spring предлагает прокси-объект JNDI, который получает ссылку, которую вы ему даете, и возвращает его как объект с интерфейсом вы указываете). Это может помочь вам упростить модульное тестирование всех этих beans и изменить конфигурацию без перекодирования чего-либо; вы можете использовать один из Spring PlatformTransactionManagers для управления DataSource или указать его в JTA-менеджер JTA-контейнера; определите свой собственный объединенный DataSource или используйте свой контейнер DataSource, опубликованный через JNDI и т.д.
Ответ 3
Хорошо добавить;
(Представления и контроллеры) Struts для своих расширенных функций JSP с тегами Struts и функциями обработки веб-запросов
(Управление службами и приложениями) Spring для обработки уровней ORM и сервисов с его отличными инъекциями зависимостей и т.д.
(ORM с независимостью db) Спящий режим для проверенного ORM