I think it depends of your requirements. If you are satisfied with Struts 2, why don't you keep with it? Why changing to something new if your requirements are satisfied with your current framework? Many times we have the feeling that some other framework is better than the one we are using, but we must consider all the effort we should spend if we wanna change our application to other technology.
Struts is not an alternate to the EJBs where as Spring is an alternate.
Spring is still a MVC-based Presentation framework. It is not an alternative to Enterprise JavaBeans. Spring has more support to working with Model code, Struts has none.
The supporting Spring code for the Model is not an alternative to a business object model. These are only supporting objects that help you integrate your business object model with your presentation code.
A Spring-based web application should connect to a POJO or EJB-based business model application in order to execute business logic. If business logic is coded in any of the Spring objects, then the Spring framework is being used incorrectly.
Spring is favored over Struts because of these supporting objects that help integrate the presentation component with the business component.
However, Spring does not present a framework for implementing business/domain logic. It helps you create a Controller and a View for your application, no Model though. EJB is still a great option for implementing the business/domain object model. [ October 08, 2008: Message edited by: James Clark ]
We should standardize our definitions first. Spring is a fully fledged application framework, that has a large stack of sub projects. One of the projects is spring MVC, which is a web framework and certainly better than struts 1.x in every way. As for struts 2, which is based on web work, it's also a great solution, and has its advantages over spring MVC (and disadvantages as well).
As for spring, if we look at its history, it started as an effort for supplying a solution for enterprise java applications, and to replace EJBs (while it also provided integration with EJBs for people who didn't want to ditch that). Spring is much more than an MVC framework. It provides dependency injection, AOP, integration with almost every known framework, a security framework (a separate sub-project), and a lot of other stuff. Struts 2 and hibernate integrate easily with spring, so you might like to add it to your stack, without ditching struts 2