xvi
Foreword
I still remember first learning about the Spring framework back in 2004. I had been using J2EE and Struts
heavily, and had struggled with many difficulties in effectively using those technologies while building
Java enterprise applications. Instead of trying to do away with J2EE altogether, Spring tried to make
using J2EE drastically simpler and more productive by offering a large collection of best practice
implementations and an inversion of control container gluing it all together. An exciting proposition
indeed!
While in general Spring did not try to reinvent the wheel by providing solutions competing with
existing parts of J2EE or other established frameworks (notably Hibernate), there was one important
exception to this rule: web application development. Spring shipped with its own web framework,
Spring MVC, a fully functional web application framework that can serve as a direct alternative to
something like Struts. At the time, I saw further opportunity to enhance Spring-based web application
development by adding a page flow component to Spring MVC called Spring Web Flow. Spring MVC and
Spring Web Flow are the prime subjects of this book.
The design of Spring MVC benefited from the lessons learned working with earlier frameworks.
Flexibility and long-term productivity were core design goals. Well-designed Spring MVC applications
can grow and change while remaining manageable and maintainable. Still, all was not good. Many
found the initial learning curve when adopting Spring, and more specifically Spring MVC, too steep. New
frameworks such as Ruby on Rails popped up and focused on short term-productivity and making it very
easy to get up-and-running. The Spring developer community recognized this shortcoming, and the
recent 3.0 and 3.1 releases of Spring MVC have largely addressed it: extensive use of convention-over-
configuration and annotations have made the framework easer to use than ever, as this book will
demonstrate! It is a real testament to the flexibility and design quality of Spring MVC that all of this has
been possible while remaining 100% backward-compatible. You now have a framework offering the best
of both worlds: easy to get started with while the fundamental principles underpinning it all pay
dividends in the long term. Spring Web Flow is currently undergoing a similar evolution.
Since 2004, Spring MVC and Spring Web Flow have seen a steady and continued increase in
popularity. They are now mature and well established Java development frameworks. If you build a Java
web application on top of these frameworks, you can rest assured that you are building on a very solid
foundation!
In this book, Marten and Koen take a practical approach to introducing Spring MVC and Spring
Web Flow. Of course, they help you in setting up a productive development environment and guide you
while getting started developing with Spring MVC and Web Flow. But they don't stop there. I really
appreciate how they did not simply cover the technical details, but took the time to explain many of the
underlying concepts, bringing a deeper understanding to you, the reader. Furthermore, the book also
covers other important topics such as enforcing security constraints and making sure your web
applications are well tested. After having read this book you should be well prepared to develop real-life
web application based on Spring technologies.