Если действия struts2 были созданы правильно, то уже был бы чистый API для сервисного уровня.Надеемся, что приложение Struts2 уже использует Spring DI.Объекты Struts2 можно использовать повторно.Но веб-слой относительно тонкий, поэтому было бы лучше удалить любые следы действий Struts2, чтобы упростить дальнейшую разработку, а не оставлять странные артефакты.
Существует четыре основных части, за которые отвечает пользователь Struts.
- Класс действия
- Struts2 специальные теги в слое вида
- Проверка
- Перехватчики
TheКласс действия, как уже упоминалось, должен быть довольно тонким, его главная цель - маршалировать объекты на пути к представлению.(Чтобы их упорядочить, нужно установить параметры формы и проверить их).Если объекты получены из сервисного уровня, то вы должны иметь возможность вырезать и вставлять логику в Spring Controllers.Если вы обнаружите логику, которая должна быть на уровне сервиса, ее нужно подтолкнуть вверх.
Теги в слое представления, в которых я не уверен.Вероятно, лучше всего заменить определенные теги стоек на теги jstl, где это возможно.Struts2 не имеет огромного набора тегов, и между тегами должно быть в значительной степени однозначное соответствие, но вам необходимо выяснить, что это за отображение (и какой тег lib лучше всего).
Валидация - я не знаю, как Spring MVC выполняет валидацию.
Перехватчики решают сквозные проблемы, я не знаю, как работают Spring перехватчики.Spring может решить проблему пользовательских перехватчиков, возможно, с помощью AOP.
В целом, веб-уровень не должен быть слишком агрессивным ... и я не уверен, что вы получите.Имейте в виду, что если ваше текущее приложение S2 не использует Spring DI, его довольно легко добавить вместе с AOP, и вы даже можете делегировать создание действий в Spring.Таким образом, я ожидаю очень небольшую отдачу при таком преобразовании.В качестве альтернативы может быть проще начать создавать то, что вам нужно, с помощью Spring MVC и превратить действия struts2 в веб-сервисы (json смехотворно прост).Затем разберите их по частям, когда у вас будет время для их реализации в Spring MVC.Преобразование означает понимание двух систем и их сопоставление, оно грязное и подвержено ошибкам ... это имеет тот же конечный эффект (удаление структуры struts2), но также учитывает производительность.