I have to admit that I have been a little skeptical of SpringMVC and some of the other presentation centric components of Spring. I am a huge fan of Spring core and the early work that Rod Johnson did in this space. It seem like a great fit for the middle tiers of an application where there were no good object management facilities available. I even created some Spring examples in my recent book, Application Architecture for WebSphere showing where Spring core fits within a layered architecture.
One of my concerns however is around the explosion of Spring into many different areas, such as at the presentation layer. Can Spring continue to be effective trying to be everything to everyone? It is almost to the point that you can ask the question, what is Not Spring? From a portal perspective I agree that that SpringMVC will work, but the real question was, should we use it? There are a lot of questions that need to be answered here, such as, what are the comparability and support issues, can we find the right skills, and questions around the long term stability of the platform.
At least that was my original thinking...
The other evening I had the pleasure of listening to Keith Donald from SpringSource speak at a Houston Java Users Group meeting. I actually wasn't going to go because he was speaking on Developing Rich Web Applications with Spring. I thought I had my mind made up on this topic.
I'm glad I went!
Not only is Keith a good speaker, but the content and topics were pretty amazing. Keith talked about SpringMVC, WebFlow, SpringAjax, and SpringJSF. Each of which could have used it's own session, but Keith did a good job of covering the basics of all of the projects.
I have to say I am very impressed. There are still questions about whether Spring should be used in some areas, especially with portal which is my primary focus, but the overall guiding principles that the SpringSource team are using, makes sense. One of those is the idea of 'Simplifying Development' so that developers can focus on business logic and not infrastructure or plumbing. The ability to use annotations removes the need to adhere to the Servlet API and gives good flexibility around creating web resources. This provides a very Spring like flavor of using POJO's as Servlets. I am still a little hesitant about how this fits into Portal. Some of the features while cool, don't make sense for a portal where URLs are managed by the portal framework, as well as the fact that the method signatures are different from a Servlet so the annotations would need to be different (I think?).
Spring WebFlow definitely looked like a useful framework for multi-page navigation. I think this could be embedded into a portlet to help solve those requirements that need a wizard type of solution. Keith only touched on how this worked, but it seems to solve lots of problems with managing state between the different pages of a multi-step business process.
I am actually going to have to wait for version 3.0 to be release, which I think is early next year. I'm too buried in my new book to think much about this right now. Once it is released I think there will definitely be some capability issues between WAS versions and especially WebSphere Portal versions, but once we figure those out, these Spring presentation frameworks may be a good addition to a developers toolkit.
If I were a non-portal web application developer, I would be all over this!
Portal in Action