Как конвертировать struts2 в SpringMVC - PullRequest
0 голосов
/ 17 августа 2011

Я не хочу спорить, стоит ли проводить преобразование из struts2 -> SpringMVC. У меня есть лучшая причина для этого. Это то, о чем просит / платит клиент.

Я сделал распорки1 год назад и сделал SpringMVC. Я надеюсь настроить через xml и не использовать аннотации так много.

Мой план:

  1. Возьмите каждый класс действий struts2, поймите, что происходит, а затем создайте чистый API для делегирования на бизнес-уровень. Этот шаг не обязателен. Именно здесь мы можем рефакторировать все, что имеет смысл.
  2. Создайте контроллер SpringMVC (примерно) для каждого класса действий 2-х распорок.

Я знаю, что это просто касается поверхности того, что нужно сделать. Кому-нибудь еще есть что добавить?

Заранее спасибо,

Andrew

1 Ответ

4 голосов
/ 17 августа 2011

Если действия struts2 были созданы правильно, то уже был бы чистый API для сервисного уровня.Надеемся, что приложение Struts2 уже использует Spring DI.Объекты Struts2 можно использовать повторно.Но веб-слой относительно тонкий, поэтому было бы лучше удалить любые следы действий Struts2, чтобы упростить дальнейшую разработку, а не оставлять странные артефакты.

Существует четыре основных части, за которые отвечает пользователь Struts.

  1. Класс действия
  2. Struts2 специальные теги в слое вида
  3. Проверка
  4. Перехватчики

TheКласс действия, как уже упоминалось, должен быть довольно тонким, его главная цель - маршалировать объекты на пути к представлению.(Чтобы их упорядочить, нужно установить параметры формы и проверить их).Если объекты получены из сервисного уровня, то вы должны иметь возможность вырезать и вставлять логику в Spring Controllers.Если вы обнаружите логику, которая должна быть на уровне сервиса, ее нужно подтолкнуть вверх.

Теги в слое представления, в которых я не уверен.Вероятно, лучше всего заменить определенные теги стоек на теги jstl, где это возможно.Struts2 не имеет огромного набора тегов, и между тегами должно быть в значительной степени однозначное соответствие, но вам необходимо выяснить, что это за отображение (и какой тег lib лучше всего).

Валидация - я не знаю, как Spring MVC выполняет валидацию.

Перехватчики решают сквозные проблемы, я не знаю, как работают Spring перехватчики.Spring может решить проблему пользовательских перехватчиков, возможно, с помощью AOP.

В целом, веб-уровень не должен быть слишком агрессивным ... и я не уверен, что вы получите.Имейте в виду, что если ваше текущее приложение S2 не использует Spring DI, его довольно легко добавить вместе с AOP, и вы даже можете делегировать создание действий в Spring.Таким образом, я ожидаю очень небольшую отдачу при таком преобразовании.В качестве альтернативы может быть проще начать создавать то, что вам нужно, с помощью Spring MVC и превратить действия struts2 в веб-сервисы (json смехотворно прост).Затем разберите их по частям, когда у вас будет время для их реализации в Spring MVC.Преобразование означает понимание двух систем и их сопоставление, оно грязное и подвержено ошибкам ... это имеет тот же конечный эффект (удаление структуры struts2), но также учитывает производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...