Struts2 + Spring, требуется ли плагин Spring?
Я заменил сервисный уровень в существующем старом проекте Struts2 на сервисные компоненты Spring, разработанные для другого проекта.
Я хотел бы просто добавить эти служебные бины в мои классы Action.
Обязательно ли использовать Struts' Spring Plugin? Или я могу добавить Spring в мое веб-приложение Struts, как и любое другое (ContextLoaderListener, applicationContext.xml, context:component-scan)?
Я скучаю по какой-то причине, почему плагин Struts Spring помогает мне по-другому?
Большое спасибо!
2 ответа
Что ж, вы можете сделать большую часть того, что вы описали в своем вопросе, так как уровень Сервисов полностью не виден для S2, и Struts2 не волнует, как вы создаете свои экземпляры Сервисного уровня и другие вещи.
Я вижу преимущества использования плагина Struts2-Spring для делегирования создания связанных с Struts2 вещей в Spring, например Action
создание классов,Interceptors
,Results
и т.п.
Я предлагаю использовать плагин так, как вы собираетесь использовать Spring в своем приложении, так что он очень хороший и гибкий, а также мощный для использования возможностей Spring DI для создания необходимых объектов, необходимых для S2, иначе S2 будет использовать свою собственную фабрику создания данных создать каркасный компонент.
Почему бы вам не использовать плагин Spring?
Он по сути невидим, использует Spring для создания ваших действий (включая внедрение других компонентов Spring) и т. Д.
Guice-х @Inject
AFAIK ничего не знает о bean-компонентах Spring, поэтому вы будете называть классы вручную, их экземпляры будут создаваться с помощью обычных механизмов Java/Guice, не будут внедряться с их собственными зависимостями Spring (если вы не сделали это вручную или через АОП или как угодно).
Вам также нужно было бы использовать не-Spring механизмы для выполнения инъекций в тестировании, что нормально, но если вы не предоставите более подробную информацию о вашем сценарии использования, я не вижу причины обойти функциональность, которую плагин Spring предоставляет вне -коробка.