Spring 2.0 Final Released

Releases | Rod Johnson | October 03, 2006 | ...

It is our pleasure to announce that the long-awaited final release of the Spring Framework version 2.0 is now available.

Spring 2.0 Released

Download | Documentation | Changelog 

As the leading full-stack Java/Java EE application framework, Spring delivers significant benefits for many projects, reducing development effort and costs while improving test coverage and quality.

This stable, production-grade release comes after 9 months of active development.  In this short time the Spring 2.x series has matured immensely, benefiting from over 150,000 early access downloads across 9 milestone releases, resulting in over 750 JIRA issues resolved, 50 of which introduce major new features.

What's New?

We believe three attributes capture what our users can expect from the Spring 2.0 series: Simple, Powerful, and Proven.


Version 2.0 brings major new simplifications to the framework's overall usage model.  As our existing users know, the heart of Spring is the Bean Container which drives the configuration of your Java and Java EE application.  In version 2.0 many common configuration tasks have been simplified through the introduction of custom Bean Configuration Dialects.  What does this mean to you?

This means you can now:

  • Make your business services transactional in one-line of configuration code.
  • Lookup objects from JNDI in one-line of configuration code.
  • Expose externalized properties to your services in one line of configuration code.
  • Apply consistent exception handling policies to your data access objects with a single annotation.
  • Invoke Stateless Remote EJBs by defining a single configuration tag.  No more custom service locators or business delegates.
Simplifications continue across the modules of the framework, allowing you to:
  • Write parameterized JDBC queries in one line of code.
  • Apply convention over configuration when deploying your Spring MVC controllers.
  • Use Spring JSP tags to reduce your typing when developing input forms.


A major goal of Spring 2.0 is to make the common tasks easier.  Version 2.0 also opens up exciting new doors for solving the harder problems in an elegant manner.  In 2.0 you may:

  • Weave custom behavior into multiple points of program execution using AspectJ's concise pointcut expression language.
  • Receive asynchronous JMS messages with transactional and thread-safety guarantees.  See it live
  • Develop your own Bean Configuration Dialect for your application.
  • Inject objects from custom scopes such as "request" and "session" scope in a thread-safe manner.
  • Invoke Groovy, Beanshell, and JRuby scripts from your Java application.
  • Schedule tasks to run asynchronously with sophisticated threading and pooling options.

Version 2.0 builds on the foundation set by Spring 1.x.  This new release delivers major new functionality while preserving backwards compatability as far as possible.

With over one million downloads since its release in March 2004, Spring 1.x made developing sophisticated applications from plain Java Objects (POJOs) the de-facto standard.  The 2.x series builds on this widely-recognized best-practice to deliver new simplification and power while preserving full compatiblity with the established Spring 1.x series.  Users can expect their upgrade to be straightforward; in most cases, simply a matter of replacing the 1.2.8 JAR files with those included in Spring 2.0.

Enjoy, and thank you

Spring 2.0 represents the cumulative effort of many over the last year.  From the lead developers Juergen, Rob, Rick, and Costin at Interface21, to our supporting partners BEA and Oracle, to the many in the community contributing innovations, patches, documentation, bug reports, and tests--there is a lot of blood, sweat, and tears here.  We truly hope you find this new version as much a joy to use as it was for us to build.  Enjoy, and rest assured: the work doesn't stop here.

Sincerely,

The Spring Team

 


Additional Resources

  • Attend The Spring Experience 2006, the premier conference for the Spring community, December 7th - 10th in Hollywood, Florida.  Register by October 16th to secure the early bird discount for your team.
  • Track future Spring 2.x development with the Roadmap
  • Bookmark this page for the rollout of additional screencasts and code examples showing the new 2.0 features in action.

Spring 2.0 Release Candidate 4 Released

Releases | Juergen Hoeller | September 17, 2006 | ...

We are pleased to announce that Spring 2.0 RC4 has been released.  Download | Documentation | Changelog

This is the last release candidate before Spring 2.0 final.  RC4 includes many further bug fixes and refinements in various areas, as well as minor new features (for example in the JMS support). Please see the changelog and JIRA issue list for all the details.  The most notable changes include...

New and Noteworthy

  • This release introduces versioned file names for the 2.0 DTD and XSDs. Please adapt your bean definition files if they build on the 2.0 XSDs on or 2.0-specific DTD features.  For example:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <!-- Define your beans here -->

</beans>

  • As you would expect, the Spring 1.2 DTD is still fully supported under its established spring-beans DTD file name.
  • 2.0 XML configuration elements and attributes are now fully documented for each schema we support.  Special thanks to Rick Evans for his contribution in this area.
  • Apache OJB support (org.springframework.orm.ojb) is no longer shipped with the core Spring distribution as of this release. It is now available from the Spring Modules project.
  • Spring's JPA support is now fully tested against Oracle TopLink Essentials v2 b16 as well as Hibernate EntityManager 3.2.0 CR2. Our extensive integration test suite fully passes for both of those JPA providers now. We are currently in the process of covering OpenJPA in the same fashion.

We look forward to your feedback on this release.

Enjoy,

Juergen Hoeller
Lead of Spring Framework Development

Spring LDAP 1.1 Released

Releases | Mattias Arthursson | August 28, 2006 | ...

Dear Spring Community,

We are pleased to announce that Spring LDAP version 1.1 has been released. This is the first release of the library as a Spring Framework sub project. Download | Documentation | API

About Spring LDAP
Spring LDAP is a Java library for simplifying LDAP operations, based on the pattern of Spring's JdbcTemplate. The framework relieves the user of the burden of looking up and closing contexts, looping through NamingEnumerations, encoding/decoding values and filters, and more.

The LdapTemplate class encapsulates all the plumbing work involved in traditional LDAP programming, such as creating, looping through NamingEnumerations, handling Exceptions and cleaning up resources. This leaves the programmer to handle the important stuff - where to find data (DNs and Filters) and what do do with it (map to and from domain objects, bind, modify, unbind, etc.), in the same way that JdbcTemplate relieves the programmer of all but the actual SQL and how the data maps to the domain model.

In addition to this, Spring LDAP provides Exception translation from NamingExceptions to DataAccessExceptions, as well as several utilities for working with filters, LDAP paths and Attributes.

Spring-LDAP requires J2SE 1.4. J2SE 1.4 is required for building. J2EE 1.4 (Servlet 2.3, JSP 1.2) is required for running the example.

Where to start
Download the distribution from the link above. The distribution contains extensive JavaDoc documentation as well as full reference documentation and a sample application illustrating different ways to use Spring LDAP.

Home
The permanent home of Spring LDAP is at http://www.springframework.org/ldap.

History
Spring LDAP is based on the SourceForge LdapTemplate project. Users of LdapTemplate are advised to switch to Spring LDAP.

Mattias Arthursson & Ulrik Sandberg
Spring LDAP Project Team

Spring 2.0 Release Candidate 3 Released

Releases | Juergen Hoeller | August 11, 2006 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0 RC3 has been released.  Download | Documentation | Changelog

This third release candidate includes many refinements based on valuable user feedback that we received for the previous release candidates.  With this release, Spring 2.0 final is now just around the corner.

The most significant refinements include:

  • Spring 1.2 compatibility has been restored for default-lazy-init="true", with respect to detection of special beans (such as PropertyPlaceholderConfigurers) by type. Alongside, lazy class loading has been reworked to allow for placeholders in class names etc. Strict lazy class loading can still be enforced for special ApplicationContexts.
  • Persistence exception translation based on the @Repository annotation is now available for Hibernate3, JDO and TopLink as well, not just for JPA.  Exception translation is now based on the underlying ORM tool's native exceptions as far as possible, with Spring-specific SQLException translation only applying when explicitly specified.
  • In our JMS support DefaultMessageListenerContainer features refined resource handling (which works on JBoss 4.0 as well), and is able to recover from a broken Connection or Destination. The caching of JMS resources is now fully configurable, with sensible defaults for both the XA and the non-XA scenario. Furthermore, JmsTemplate reuses cached JMS resources within a JTA transaction.
  • Servlet and Portlet Web MVC support a common WebRequestInterceptor abstraction now, which allows Open Session/EntityManager/etc in View interceptors to be reused across Servlet and Portlet environments. As a consequence, all such Portlet-specific interceptors have been dropped in favor of the new generic ones (OpenSessionInViewInterceptor etc).

Of course, there are many further refiements in the details. Please see the changelog file (as well as the changelog in JIRA) for details.

Let us know about any remaining issues you might encounter with RC3.  The Spring 2.0 final release is now just around the corner.

Juergen Hoeller,
Lead Spring Framework Development

Spring 2.0 RC2 Released

Releases | Juergen Hoeller | July 06, 2006 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0 RC2 has been released.  Download | Documentation | Changelog

This is the second release candidate on the way to Spring 2.0 final. It introduces a number of bug fixes and minor refinements, in particular in the AOP framework and in the JPA support. Please see the changelog for details. A number of further known issues will be addressed in the upcoming 2.0 RC3 release; see our JIRA road map for details.

Please give this release a try with your applications and let us know about any problems that you might encounter! It is important to emphasize that Spring 2.0 provides backwards compatability with the Spring 1.x series.  Spring 2.0 also continues to support JDK 1.3+ and J2EE 1.3+ (even J2EE 1.2+ except for the JSP tags and the EJB support). Compatability is critically important to our user base and we are committed to providing it. Hence, we're also interested in learning about potential compatibility issues on any such platform.

Thank you for all of the feedback leading up to this release.  We look forward to more of the same towards the big 2.0 GA launch date!

Enjoy,

Juergen Hoeller
Lead, Spring 2.0 Product Development

Spring Web Flow 1.0 RC3 Released

Releases | Keith Donald | June 26, 2006 | ...
 

Dear Spring Community,

We are pleased to announce that Spring Web Flow (SWF) 1.0 RC3 (Release Candidate 3) has been released.  Download | Documentation | Changelog

This stable release contains bug fixes and minor improvements.   At this time we expect this to be the last release candidate before Spring Web Flow 1.0 final, which is just around the corner.  The noteworthy include...

NOTEWORTHY IMPROVEMENTS

Improved flow exception hierarchy.  Overall the exception hierarchy now more clearly organizes the categories of failure from flow definition access (FlowLocatorException) to runtime flow execution (FlowExecutionException) and execution persistence (FlowExecutionRepositoryException).

 

Improved support for BACK button use within a Portlet environment.  Combined with a continuation-based repository SWF supports full use of browser navigational buttons (back, refresh) within a Portlet environment while the flow remains active.  When a flow execution terminates a browser refresh will trigger a new execution to be launched automatically.

Simpler default JSF view mapping.  Now by default SWF view names are expected to correspond to JSF view ids exactly. You'll see this default in play within the sellitem-jsf sample--note how views are referenced like "/priceAndItemCountForm.jsp" like a standard JSF navigation handler.  This allows natural support for other JSF view technologies such as Facelets and is a more natural default for JSF developers.  If you require a custom mapping SWF to JSF view mapping, plug a custom ViewIdMapper into your FlowPhaseListener.

Sample application simplifications.  We've simplified the fileupload, flowlauncher, birthdate, and sellitem samples to take advantage of the latest features and best practices of Spring Web Flow.

POTENTIAL USER AFFECTING CHANGES

With 1.0 RC3 there are a few potential user-affecting changes on the road to 1.0 final.  The following section notes them:

The FormAction property "validateUsingValidatorMethod" was removed for simplicity.  Experience has shown this property to be a source of confusion for new users.  As a better alternative, to execute a data binding operation without validation simply invoke the "bind" action method from your flow definition.  When you require piecemeal Validator validation, simply invoke "bindAndValidate" or "validate" with the "validatorMethod" attribute set to the specific validator method.  See sellitem for an example.

StateExceptionHandler was renamed "FlowExecutionExceptionHandler". This affects custom handler implementations.  To upgrade, simply implement the new interface; the signature is logically the same.

FlowExecutorImpl's "redirectOnPause" attribute now accepts a boolean value instead of a RedirectType enum.  There is only one redirect type in SWF as of 1.0 RC2--the flow execution redirect.  Setting this flag to 'true' triggers it each time a flow execution pauses by entering a view state.  See Numberguess or sellitem for an example.
--------

One of the best ways to get started with Spring Web Flow is to review and walkthrough the sample applications.  We recommend reviewing all samples, supplementing with reference manual material as needed from the start. Ten sample applications ship with the 1.0 RC3 release, each demonstrating a distinct set of product features.  These samples are:

1. Phonebook - the original sample demonstrating most features (including subflows)
2. Sellitem - demonstrates a wizard with conditional transitions, flow execution redirects, conversational scope, and continuations
3. Flowlauncher - demonstrates all the possible ways to launch and resume flows
4. Itemlist - demonstrates REST-style URLs and inline flows
5. Shippingrate - demonstrates Spring Web Flow together with Ajax technology (thanks to Steven Devijver)
6. NumberGuess - demonstrates stateful beans and "single key" flow execution redirects.
7. Birthdate - demonstrates Struts integration
8. Fileupload - demonstrates multipart file upload
9. Phonebook-Portlet - the phonebook sample in a Portlet environment
(notice how the flow definitions do not change)
10. Sellitem-JSF - the sellitem sample in a JSF environment

Enjoy!

The Spring Web Flow Team

Keith Donald
Erwin Vervaet
Juergen Hoeller
Colin Sampaleanu
Rob Harrop

Spring 2.0 RC1 Released

Releases | Juergen Hoeller | June 21, 2006 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0 RC1 has been released.  Download | Documentation | Changelog

This is the first release candidate for Spring 2.0 after five milestone releases over the last six months. This stable release is waiting for broad user feedback on the way towards 2.0 final, targeted for early July.

The major new themes of Spring 2.0 are:

  1. Simplified Configuration - you will find you write much less code overall to configuration your applications.  The code you do write is high-level and domain-specific, benefiting from smart defaults as well as rich validation and tool support.

  2. Powerful AOP Unification - you may apply aspects that weave custom behavior before, after, and around your objects concisely with AspectJ while still benefiting from the simplicity of the Spring AOP runtime.

  3. JSR 220 Java Persistence Archtecture (JPA) - to provide you choice in persistence provider implementation.  Spring is the first to support JPA in both JEE and JSE environments with full portability between the two.

  4. Asynchronous JMS Messaging - Message-Driven POJOs bring you lightweight asynchronous components for JSE environments with the choice of JMS provider.

  5. JSR-168 Portlets - Spring Portlet MVC delivers a framework for developing JSR 168 portlets which includes integration with Spring Web Flow for orchestrating user interactions.

It is important to emphasize that Spring 2.0 provides backwards compatability with the Spring 1.x series.  Compatability is critically important to our user base and we are committed to providing it.

Further major new features for each of these areas include...

Configuration Simplification
  • Bean definitions based on XML schema, with out-of-the-box XML namespaces for simplifying common configuration tasks
  • Support for extended bean scopes in application contexts, with web request and session scopes as main targets
  • Bean definition enhancements: lazy loading of bean classes, collection merging, and intelligent error messages
AOP
  • Simplified AOP configuration based on XML schema namespaces
  • Support for AspectJ pointcut expression language and @AspectJ-style aspects
  • Support for dependency injection on any object, including fine grained domain objects (based on AspectJ)
Persistence and JPA
  • Enhanced JDBC support: named SQL parameters, generics-based SimpleJdbcTemplate
  • Explicit support for Hibernate 3.1 and 3.2 (while remaining compatible with Hibernate 3.0)
  • Support for the Java Persistence API (JPA), including the full container contract with class instrumentation
Scheduling and Messaging
  • TaskExecutor abstraction for submitting asynchronous work
  • Support for various thread pools, such as a Java 5 ThreadPoolExecutor and a CommonJ WorkManager
  • Support for asynchronous JMS ("Message-Driven POJOs") based on message listener containers
Web Application Development
  • Conventions-based web MVC: controller mappings, model attribute names
  • JSP form tag library for use with Spring Web MVC and Spring Web Flow
  • Full support for Portlet environments, including Portlet-style MVC based on a DispatcherPortlet

... and many, many other refinements in the details.

To see many of these features in action, review the JPetstore reference application included in the release distribution within the samples/jpetstore directory.  See the What's New in 2.0? section of the reference documentation for additional detail.

We will be working with the Maven2 community to have 2.0 RC1 uploaded to the Maven repository in the coming days.

Thank you Spring community for all of the feedback leading up to this release.  We look forward to your feedback towards the big 2.0 GA launch date!

Enjoy, 

Juergen Hoeller
Lead, Spring 2.0 Product Development

Spring Web Services 1.0 M1 Released

Releases | Arjen Poutsma | June 12, 2006 | ...

Dear Spring community,

I'm pleased to announce that Spring Web Services 1.0 M1 has been released. Download | Documentation | Changelog

This release is the first milestone of Spring-WS: a product of the Spring community focused on creating document-driven Web services.

Spring-WS 1.0 M1 includes:

  • A streaming SOAP message model based on Apache Axiom,
  • WS-Security support that integrates with Acegi,
  • JAXB 2.0 marshaller support,
  • Many further improvements and fixes for issues discovered since 0.9.1.

See the changelog for details.

For more information about Spring-WS and its goals, refer to the Spring-WS homepage.

Spring Web Flow 1.0 RC2 Released

Releases | Keith Donald | June 10, 2006 | ...


 

Dear Spring Community,

We are pleased to announce that Spring Web Flow (SWF) 1.0 RC2 (Release Candidate 2) has been released.  Download | Documentation | Changelog

This release contains bug fixes and minor improvements.   The new and noteworthy of 1.0 RC2 include...

NEW AND NOTEWORTHY

Support for passing newly launched flow executions input from their calling environment in a configurable manner.  By default all request parameters are exposed as input.  The flow may then choose to map this input into its own local scope using its input mapper.  This mapper defines the input contract for the flow which is consistent regardless of whether the flow is started as a top-level flow  or as a subflow.

Consider the following request URL as an example:

http://localhost:8080/flights/search-flow?flightNumber=12345

By default, when this URL is accessed the backing FlowExecutor will place the "flightNumber" request parameter into an "input map".  The input map is then passed to a new execution of the "search-flow".

Within the search-flow definition:

<flow start-state="executeSearch">
    <input-mapper>
        <mapping source="flightNumber" target="flowScope.flightNumber"/>
    </input-mapper>

    ...
</flow>
The <input-mapper> above defines the flow's input contract, stating this flow supports a "flightNumber" input attribute.  When a flightNumber is provided at startup it will be mapped into "flowScope" under the name "flightNumber".  The mapper is also capable of performing a type conversion during the mapping operation.

To customize flow execution input map population, for example, to pull attributes from the request path or some other external source, configure the "FlowExecutorImpl.inputMapper" property.

Support for flow execution and external redirects within a JSR168 Portlet environment.  Combined with a continuation-based repository this allows use of browser navigational buttons (back, refresh) within a Portlet environment.  Also in a Portlet environment we now expose a "globalSessionMap" property for accessing attributes in Portlet Session APPLICATION_SCOPE.

A new repository factory named "SingleKeyFlowExecutionRepositoryFactory". This implementation generates a single unique identifier for each persistent flow execution.  It is useful for achieving 1.0 EA "conversation redirect" semantics--the case where after every POST a REDIRECT-GET hits a stable "flow execution URL" which embeds the constant flow execution key.  See the NumberGuess sample for an illustration.

Introduction of a standalone "conversation" subsystem, which the provided flow execution repository implementations delegate to for demarcating logical conversations that manage flow execution state.  This conversation subsystem is fully decoupled from the rest of Spring Web
Flow, is usable outside of SWF, and may evolve into its own independent module over time. 
The central service interface consists of:

public interface ConversationService {
    public Conversation beginConversation(ConversationParameters parameters);
    public Conversation getConversation(ConversationId id);
    public ConversationId parseConversationId(String encodedId);
}


public interface Conversation {
    public ConversationId getId();
    public void lock();
    public void end();
    public Object getAttribute(String name);
    public void setAttribute(String name, Object value);
    public void removeAttribute(String name);
    public void unlock();
}
When a new flow execution is launched and needs to be persisted beyond one request the repository calls "beginConversation" to start a new logical
conversation and places attributes in conversation scope to track execution state.  Likewise, when a flow execution ends the governing conversation also ends and any allocated state is cleaned up.

In the future we expect to offer robust features within this system, including conversation monitoring and management via JMX as well as conversation history and statistics.  We also expect to prove its applicability to other environments outside of Spring Web Flow.  Special thanks to Juergen Hoeller and Ben Hale for their help in the design of this portable conversation service abstraction.


POTENTIAL USER AFFECTING CHANGES

With 1.0 RC2 there are a few potential user-affecting changes on the road to 1.0 final.  The following section notes them:

In spring-webflow-dtd, we renamed 'resultName' and 'resultScope' <action/> element attributes to 'result-name' and 'result-scope', respectively, for consistency with other attribute and element names.

The FormAction properties "bindOnSetupForm" and "validateOnBinding" were removed for simplicity.  Experience has shown these properties are rarely used  and have been a source of confusion for new users.  As a better alternative, to execute a data binding operation before entering a view state simply invoke the "bind" action method from your flow definition.  To calculate if validation should occur for a bindAndValidate attempt, override the single "validationEnabled(RequestContext)" hook.

The FormAction "exposeFormObject" action method was removed.  Simply use "setupForm" which is preferred.

The FlowExecutionRepository and FlowExecutor SPI interfaces were simplified.  More logic is now encapsulated behind a FlowExecutionRepository including the structure and format of generated FlowExecutionKeys.  In addition, the FlowExecutionRepository is now strictly responsible for managing persistent flow executions and nothing else.  The additional concept of a "conversation" is no longer known to the SWF core.  This means several things:

  • The overall repository interface is simpler, making it easier to create custom FlowExecutionRepositories with custom FlowExecutionKeys.
  • The SWF core lexicon is stronger: flow executors invoke flow executions to execute flows.  Executions that remain active beyond one request are persisted to a repository.
  • The default repository implementations choose to delegate to a distinct "conversation subsystem" for tracking conversational state driven by the execution system, but the dependency on this system is fully encapsulated and is optional.

The FlowExecutor interface, the entry point into SWF, was also simplified for callers.  It now encapsulates knowledge of complex internal types such
as EventIds and FlowExecutionKeys and thus is overall easier to use.

Along the same lines, support for the explicit "conversationRedirect" was removed.  This represents removal of the "conversationRedirect:"
'view' prefix and the "CONVERSATION" RedirectType.  To achieve the same logical redirect semantics with 1.0 RC2 simply configure a FlowExecutor with redirectOnPause type FLOW_EXECUTION and a repositoryFactory of
SingleKeyFlowExecutionRepositoryFactory.
--

Spring Web Flow 1.0 RC2 further refines the reference manual, providing 50 pages on SWF usage.  The manual is available on-line in HTML and PDF forms.

One of the best ways to get started with Spring Web Flow is to review and walkthrough the sample applications.  We recommend reviewing all samples, supplementing with reference manual material as needed from the start. Ten sample applications ship with the 1.0 RC2 release, each demonstratinga distinct set of product features.  These samples are:

1. Phonebook - the original sample demonstrating most features (including subflows)
2. Sellitem - demonstrates a wizard with conditional transitions, flow execution redirects, conversational scope, and continuations
3. Flowlauncher - demonstrates all the possible ways to launch and resume flows
4. Itemlist - demonstrates REST-style URLs and inline flows
5. Shippingrate - demonstrates Spring Web Flow together with Ajax
technology (thanks to Steven Devijver)
6. NumberGuess - demonstrates stateful beans and "single key" flow
execution redirects.
7. Birthdate - demonstrates Struts integration
8. Fileupload - demonstrates multipart file upload
9. Phonebook-Portlet - the phonebook sample in a Portlet environment
(notice how the flow definitions do not change)
10. Sellitem-JSF - the sellitem sample in a JSF environment

To build the sample applications for deployment in one step simply extract the release archive, access the projects/spring-webflow/build-spring-webflow directory and execute the "ant dist" target.  See the release readme.txt and
projects/spring-webflow/spring-webflow-samples/readme.txt for more information on the release archive contents and samples, respectively.
All sample projects are Spring IDE projects directly importable into Eclipse.

Thanks to everyone out there who supported this release.  At this time we expect the next release of SWF to be 1.0 final targeting the late June
timeframe.  There is still the possibility we will have another 1.0 release candidate if warranted.  Be sure to monitor the SWF homepage and
forums for updates.

Enjoy!

The Spring Web Flow Team

Spring Web Flow 1.0

Releases | Keith Donald | June 10, 2006 | ...

 

Product Leads
Keith Donald, SpringSource
Erwin Vervaet, Ervacon
 
Spring Web Flow is a next generation Java web application controller framework that allows developers to model user actions as high-level modules called flows that are runnable in any environment.  The framework delivers improved productivity and testability while providing a strong solution to enforcing navigation rules and managing application state.  

The Big Picture

Spring Web Flow allows developers to build reusable, self-contained…

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all