Allows for Extension
Spring Web Flow was designed from the ground up to be as extensible as possible. This is
achieved through providing well-documented extension points and its ability to hook into a
rich domain model in a noninvasive manner.
Another driving factor for Spring Web Flow was that of integration with existing MVC tool
kits. Because Spring Web Flow is self-contained, integration is usually a case of configuring
one of the provided adapters and requires very little, if any manipulation of your existing code.
Testable
Spring Web Flows allows for the development of externalized, self-contained Controller
modules that are fully testable out of the container.
Identifying Flows (Easy, Natural Language)
The vocabulary that Spring Web Flow uses is sensibly not tied to a web tier; it talks about
flows, states, and views, thus reducing the inherent conceptual gap between designers and
implementers. In fact, it is not too much of a stretch to imagine a nirvana where the use-case
models are manipulated in your favorite UML tool that Spring Web Flow then interrogates via
an implementation of org.springframework.webflow.config.FlowBuilder.
In the next chapter, we will delve into the more advanced aspects of Spring Web Flow
(e.g., subflows, exception handling, continuations, long-living transactions) and detail how
to handle common problems like Back button navigation and double submissions.
334 CHAPTER 11 ■INTRODUCTION TO SPRING WEB FLOW