Я использую оба: Spring-MVC (2.5) и Seam
Поскольку в Seam используется технология Java Server Faces (технология на стороне сервера), она закулисна лучше подходит для малых и средних приложений. (Каждое дерево представлений JSF хранится в сеансе - вы можете хранить его на стороне клиента, но помните о проблемах с пропускной способностью). Но у него есть некоторые преимущества:
Обычно веб-приложение использует следующий путь
view >> controller >> service >> domain
С помощью шва вы можете получить
view >> service >> domain
Или даже (с использованием шаблона посредника, предоставленного Seam Framework)
No controller, No service
view >> domain
Кроме того,
- JSF 2 поддерживает JSR 303 - проверка бинов
- Вы можете использовать Wicket вместо JSF, если хотите
- Поддержка управления разговорами и бизнес-процессами
- Используйте можете использовать Spring DI, если хотите
Весна-MVC
Имеет мощную инфраструктуру веб-уровня
- Отображение обработчика (выбирает, какой контроллер должен обрабатывать запрос)
- View resolver (выбирает, какой View должен отображать ответ)
- Может использоваться для больших приложений
- Мощная привязка данных
- Spring 3.0 поддерживает контроллер на основе аннотаций (JSR 303 - Bean Validation, скоро)
Но я все еще не использую Spring 3.0, потому что
- Используя (и расширяя при необходимости) MultiActionController, я могу получить соглашение о конфигурации без настроек XML для определения вашего контроллера (вам просто нужно настроить MultiActionController как @Component)
- SimpleFormController обеспечивает аналогичное поведение в контроллере на основе аннотаций Spring 3.0
...
О пути обучения, я думаю, что оба одинаковы.