Spring Framework 2.0.3 Released

Releases | Juergen Hoeller | March 09, 2007 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0.3 has been released.

Spring 2.0 Released

 

This is a bugfix and enhancement release in the Spring 2.0 series, including about 200 (!) refinements and fixes. Furthermore, this release introduces support for the JSR-166 (java.util.concurrent) backport project and basic support for JCA 1.5 (ResourceAdapter bootstrap, WorkManager support), as well as extended support for IBM WebSphere and Oracle OC4J.

Among the noteworthy enhancements are DefaultMessageListenerContainer's dynamic scaling capability and the thoroughly revised scripting integration, supporting more styles of writing Groovy and BeanShell scripts and providing seamless interaction with Spring's AOP facilities. This release also includes refinements in the AspectJ pointcut support as well as in the scoped-proxy facility.

See the changelog for details!

Cheers,
Juergen
 
-----
Juergen Hoeller
Interface21 - http://www.interface21.com

Spring Web Flow 1.0.1 Released

Releases | Keith Donald | January 11, 2007 | ...

Dear Spring Community,

We are pleased to announce that Spring Web Flow 1.0.1 has been released.

 

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.  The framework delivers improved productivity and testability while providing a strong solution to enforcing navigation rules and managing application state.

Release Notes

Spring Web Flow 1.0 saw over 10,000 downloads in a two month period and is used heavily within Fortune 500 companies.  This is the first 1.0 maintenance release, including fixes for bugs that have been reported since 1.0 final, as well as introducing several minor enhancements. Please see the changelog for all the details.

Getting Started

The best way to get started with Spring Web Flow is to download the release, read Erwin's practical introduction, and walk through the sample applications.  We recommend reviewing all samples, starting with Phonebook, supplementing with reference manual material as needed. Ten sample applications ship with the release, each demonstrating a distinct set of product features.

Enjoy!

Keith Donald and Erwin Vervaet
Spring Web Flow Project Leads

Spring Framework 2.0.1 Released

Releases | Juergen Hoeller | November 23, 2006 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0.1 has been released. Download | Docs | Changelog.

This is the first maintenance release for Spring 2.0, including fixes for most bugs that have been reported since 2.0 final as well as many minor enhancements. This release also introduces OpenJPA support and GlassFish weaving support. Furthmermore, it features redesigned AspectJ support internals and an improved bean definition tooling SPI.

As always, please see the changelog for the details.

If you are new to the Spring 2.0 series, please also see the original Spring 2.0 announcement for more information.

FYI, the Spring 2.0.2 release is scheduled for end of December. Our JIRA road map outlines the issues that are planned to be addressed in that release.

Juergen
-----
Juergen Hoeller
Lead, Spring Framework Development
Chief Architect, Interface21
http://www.springframework.org
http://www.interface21.com

Spring LDAP 1.1.1 Released

Releases | Ulrik Sandberg | November 18, 2006 | ...

Dear Spring Community,

We are pleased to announce that Spring LDAP version 1.1.1 has been released. This is an update release that adds several new features and fixes a few problems that were in 1.1. Download | ChangeLog | Documentation | API

A summary of the more important changes:

  • Added capability to use server-side controls in search.
  • DirContextAdapter.getNameInNamespace() now returns the full DN.
  • DistinguishedName now supports multi-valued RDNs separated by a '+' sign, like "cn=Rod+sn=Johnson", for example.
  • Added lookup methods that take an array of return attribute names.
  • Upgraded Spring to 2.0 internally. Spring 1.2.8 is still supported.

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 Web Flow 1.0 RC4 Released

Releases | Keith Donald | October 05, 2006 | ...
Dear Spring Community,
 
We are pleased to announce that Spring Web Flow 1.0 RC4 has been released.
 

 

Spring Web Flow is a product of the Spring community focused on the orchestration of user interface flow within a web application.

This release contains many improvements and several exciting new features.  We consider it the most stable release to-date and, at last, the release that makes the Spring Web Flow 1.0 final roadmap feature complete.  Spring Web Flow 1.0 final will be released next week with minimal changes.  Between now and then we encourage you to test 1.0 RC4 to help catch any remaining issues before the big 1.0 launch.

Note there are user-affecting changes in this release.  1.0 RC3 or earlier users should review the upgrade guide which outlines these changes in detail.

The new and noteworthy in 1.0 RC4 is an exciting list, including: 

New and Noteworthy

As the final release candidate before Spring Web Flow 1.0 final, Spring Web Flow 1.0 RC4 introduces powerful new features such as render actions (1), evaluate actions (2), set actions (3), flash scope (4), flow execution attributes (5), and always redirect on pause (6). It provides enhanced documentation, better flow definition validation, smart defaults, and a complete custom Spring 2.0 configuration schema (7) for configuring the flow execution engine.

  • (1) Render actions execute application behavior before a response is rendered.  A render action is invoked when a view-state is asked to make a renderable view selection, on entry or on a refresh triggered by a redirect or brower refresh button.  The following example shows a render-action that executes a search of the phonebook before the results view is rendered.

    <view-state id="displayResults" view="searchResults">
        <render-actions>
            <bean-action bean="phonebook" method="search">
                <method-arguments>
                    <argument expression="flowScope.searchCriteria"/>          
                </method-arguments>
                <method-result name="results"/>
            </bean-action>
        </render-actions>
        <transition on="newSearch" to="enterCriteria"/>
        <transition on="select" to="browseDetails"/>
    </view-state>

  • (2) Evaluate actions evaluate expressions against flow execution state.  The expression (OGNL-based by default) can be against any object reachable from the flow execution's root RequestContext, including objects in any scope such as flow scope.  The following example shows an evaluate-action that invokes the "makeGuess" method on the "game" flow-scoped bean:
    <action-state id="makeGuess">
        <evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
            <evaluation-result name="guessResult"/>
        </evaluate-action>
        <transition on="CORRECT" to="showAnswer"/>
        <transition on="*" to="enterGuess"/>
        <transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
    </action-state>
  • (3) Set actions set attribute values in scope types such as flow scope.  The attribute may be a top-level attribute or a property at a nested property path.  The following example shows a set-action that sets the "fileUploaded" attribute to "true" in flash scope.
    <action-state id="uploadFile">
        <action bean="uploadAction" method="uploadFile"/>
        <transition on="success" to="selectFile">
            <set attribute="fileUploaded" scope="flash" value="true"/>
        </transition>
    </action-state>
  • (4) Flash scope is a new scope type for persisting attributes across a redirect and any refreshes of the view.  When an event is signaled to transition out of the view flash scope is cleared.  The following complete flow definition example shows use of flash scope to expose a "fileUploaded" attribute to the selectFile view-state for displaying a success message after a successful upload.
    <flow xmlns="http://www.springframework.org/schema/webflow"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/webflow
                                           http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd">
   
        <start-state idref="selectFile"/>
       
        <view-state id="selectFile" view="fileForm">
            <transition on="submit" to="uploadFile"/>
        </view-state>
   
        <action-state id="uploadFile">
            <action bean="uploadAction" method="uploadFile"/>
            <transition on="success" to="selectFile">
                <set attribute="fileUploaded" scope="flash" value="true"/>
            </transition>
        </action-state>
       
    </flow>
  • (5) Flow execution attributes allow you to set custom attributes that can influence flow execution behavior.  The following example shows an instruction to set the "alwaysRedirectOnPause" attribute to false in a Portlet environment (where redirecting doesn't tend to apply).
    <flow:executor id="flowExecutor" registry-ref="flowRegistry">
        <flow:execution-attributes>
            <flow:alwaysRedirectOnPause value="false"/>
        </flow:execution-attributes>
    </flow:executor>
  • (6) "Always redirect on pauses" gives you default POST+REDIRECT+GET behavior with no special coding. Now by default, when a view state is entered a redirect is issued automatically.  This triggers a refresh to a flow execution URL that remains stable while the conversation is active.
  • (7) The new Spring 2.0 Configuration Dialect greatly simplifies system configuration and provides strong validation and tools support.  Configuring webflow's infrastructure is now as simple as defining two elements, as shown in a complete manner below:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:flow="http://www.springframework.org/schema/webflow-config"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/webflow-config
               http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
   
        <!-- Launches new flow executions and resumes existing executions. -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- Creates the registry of flow definitions for this application -->
        <flow:registry id="flowRegistry">
            <flow:location path="/WEB-INF/flows/**-flow.xml"/>
        </flow:registry>
       
    </beans>

See the reference manual for more information on these features.  Spring Web Flow 1.0 RC4 further refines the reference documentation, providing 70 pages on SWF usage.  The manual is available on-line in HTML and PDF forms.

Getting Started

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  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, custom text field formatting, 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
  6. NumberGuess - demonstrates stateful beans, evaluate actions, and "single key" flow execution redirects.
  7. Birthdate - demonstrates Struts integration
  8. Fileupload - demonstrates multipart file upload, set actions, and flash scope
  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 quick evaluation simply:

  1. Extract the spring-webflow-1.0-rc4.zip release archive
  2. Access the projects/spring-webflow/build-spring-webflow directory
  3. Execute the "ant dist" target.
  4. See the "target/artifacts" directory for deployable .war files for each sample as well as expanded war directories.
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.  Spring Web Flow 1.0 is now... finally... just around the corner.

Enjoy!

The Spring Web Flow Team

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

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