Spring Web Flow 1st preview release is out

We are pleased to
announce a preview release of Spring Web Flow for use with the Spring
1.2 release path.  With this release, we consider the web flow
system fit for development use.

Contained in this release are new features we expect to take web
applications with demanding page flow requirements to the next
level.  These include:

  • The ability to capture the logical
    page flows of
    your application as self-contained modules reusable in multiple
  • The ability to nest flows ‘n’ levels
    deep (as
    subflows), where each flow is a "black-box" adhering to a well-defined
    contract for input/output.
  • The ability to express page flows
    with a pluggable flow definition format (currently Java-based and
    XML-based builder formats are provided.)
  • The ability to affect the path
    through a flow in a
    dynamic fashion by reasoning on contextual data in any supported scope.
  • The ability to track and respond to
    the lifecycle
    of a page flow.
  • Automatic state management with the
    ability to
    store model data in several scopes (event, request, flow)
  • The ability to centralize related
    action logic
    associated with a flow in one class.
  • Support for application transaction
    synchronization, using a token-based mechanism.
  • No hard-wired dependency on HTTP
    request/response or any request URL, for use in other environments like
    Portlets, JSF, and Tapestry.
    - An expired flow detector, for automatic cleanup of abandoned flows.
  • Out of the box helper actions for
    form data binding
    and validation.
  • Out of the box Struts 1.x
    integration (sample
  • Out of the box Spring MVC
  • Designed for extensibility, with
    plug-in points for customization (custom state types, custom flow
    builders, etc.)
Read more

Spring Framework 1.2RC1 Released

It’s Spring time Smile

We are pleased to announce that Spring 1.2 RC1 has just been released. This release introduces a number of major new features:

  • finer-grained distribution jar files, alongside the full spring.jar

  • AOP Alliance interfaces are now contained in spring-aop.jar and spring.jar

  • XML bean definition improvements ("ref" and "value" shortcut attributes


  • improved AOP TargetSourceCreator mechanism (supporting

    LazyInitTargetSource too)

  • transaction annotation support for JDK 1.5+ (annotation called


  • improved WebLogicJtaTransactionManager (transaction names, isolation


  • SqlRowSet support for JDBC (in conjunction with JdbcTemplate’s


  • Hibernate3 support (in orm.hibernate3; Hibernate 2.1 support is still


  • JMX support for export of Spring beans as managed resources and for MBean


  • Commons Attributes and JDK 1.5+ annotations for JMX MBean export

    This release also contains many minor enhancements, for example:

  • factored out BindingErrorProcessor strategy for ServletRequestDataBinder

  • improved ParameterMethodNameResolver for Web MVC MultiActionController
Read more

Spring Framework 1.1.5 Released

We are pleased to announce that Spring Framework 1.1.5 has just been released.

This is the last bug fix and minor enhancement release in the 1.1.x series,
featuring many minor improvements such as:

  • added overloaded "reject" and rejectValue" methods without default message to Errors interface and BindException

  • added "lookup(name, requiredType)" convenience method to JndiTemplate, matching the JNDI object against the given type

  • added "homeInterface" property to AbstractRemoteSlsbInvokerInterceptor, for specifying the home interface to narrow to

  • introduced MailMessage interface as common interface for SimpleMailMessage and JavaMail MIME messages

  • Log4jConfigurer accepts a "classpath:" URL or a "file:" URL as location too, not just a plain file path

  • Log4jConfigurer accepts config files that do not reside in the file system, as long as there is no refresh interval

  • added "int[] batchUpdate(String[] sql)" method to JdbcTemplate, for executing a group of SQL statements as a batch

  • added C3P0NativeJdbcExtractor for C3P0 0.8.5 or later (for earlier C3P0 versions, use SimpleNativeJdbcExtractor)

  • added "maxRows" bean property to JdbcTemplate, allowing to specify the maximum number of rows to be fetched

  • added "fetchSize" and "maxRows" bean properties to RdbmsOperation, passing the values to the internal JdbcTemplate

  • added ClobStringTypeHandler, BlobByteArrayTypeHandler and BlobSerializableTypeHandler for iBATIS SQL Maps 2.0.9

  • ResourceHolderSupport throws TransactionTimedOutException if no time-to-live left (before attempting an operation)

  • TransactionSynchronization objects can influence their execution order through implementing the Ordered interface

  • JtaTransactionManager is able to work with a JTA TransactionManager only (i.e. without a UserTransaction handle)

  • upgraded MockHttpServletRequest to Servlet API 2.4 (added getRemotePort, getLocalName, getLocalAddr, getLocalPort)

  • upgraded MockPageContext to JSP API 2.0 (added getExpressionEvaluator, getVariableResolver, overloaded include)

  • added "contextOverride" option to ServletContextPropertyPlaceholderConfigurer, letting web.xml override local settings

  • added "searchContextAttributes" option to
    ServletContextPropertyPlaceholderConfigurer, resolving context attributes

  • added "clear" and "isEmpty" methods to ModelAndView, allowing to clear the view of a given ModelAndView object

  • added JasperReportsMultiFormatView, allowing to specify the output format dynamically via a discriminator in the model

  • JSP EL expressions in Spring’s JSP tags will be parsed with JSP 2.0 ExpressionEvaluator on JSP 2.0 (Jakarta JSTL else)

  • changed "spring:transform" tag’s "value" attribute from String to Object, to allow for expressions resolved by JSP 2.0

Read more

Spring Framework 1.1.4 Released

are pleased to announce that Spring
Framework 1.1.4
been released. This is a bugfix and minor enhancement release in the
1.1 series.

Among the new
features are:

  • added LazyInitTargetSource, lazily accessing a singleton from a BeanFactory (lazily initializing on first call)
  • added ServiceLocatorFactoryBean, allowing to map custom service locator interface methods to BeanFactory.getBean calls
  • reworked ResourcePatternResolver to extend ResourceLoader, for ResourcePatternResolver checks in ResourceLoaderAware
  • made BindException serializable, provided that the contained target object is serializable
Read more

Spring Framework 1.1.3 Released

are pleased to announce that Spring
Framework 1.1.3
been released. This is a bugfix and minor enhancement release in the
1.1 series; most importantly, JDK 1.3 compatibility is fully restored.

Among the new features in this release are:


"setResourceLoader" method to
GenericApplicationContext, for overriding the default resource loading

  • added
    resolving paths as file system resources rather than as class path

  • BeanWrapperImpl
    registers a default ResourceArrayPropertyEditor
  • Read more

    Spring Framework 1.1.2 Released

    are pleased to announce that Spring
    Framework 1.1.2 has
    been released. This is a bugfix and minor enhancement release.


    Among the new features in this release are


    support for multi-dimensional
    collections to BeanWrapperImpl (e.g. "map[myKey][0]" or

  • added
    "getType(name)" method to
    BeanFactory interface, checking the type of object that "getBean" would

  • added
    convenience method to ListableBeanFactory interface, without explicit
  • Read more

    Spring Framework 1.1.1 Released

    are pleased to announce that Spring
    Framework 1.1.1
    been released. This is a bugfix and minor enhancement release.


    Among the new features in this release are:


    element for XML bean

  • support
    for non-public classes
    and non-public init and destroy methods

  • bean
    factory regards bean
    references for correct destruction order (not requiring "depends-on")

  • bean
    factory detects JDK 1.4
    and Commons Collections for linked/identity map creation

  • factored
    out the
    "publishEvent" method into the ApplicationEventPublisher interface
  • Read more

    Spring Framework 1.1 Final Released

    are pleased to announce that Spring
    Framework 1.1
    just been released.
    Since 1.1 RC2, some API clarifications have happened and a number of
    bugs have been fixed.

    There is also a variety of minor new features:

    • reworked BeanWrapperImpl’s
      property-specific custom
      editor handling to allow registration for uninitialized subpaths

    • added "applyBeanPropertyValues"
      method to
      AutowireCapableBeanFactory, for populating an existing bean instance

    • added "(abstract)" marker for
      properties bean
      definitions respectively "abstract" attribute for XML bean definitions

    • added support for SqlReturnType
      interface which
      allows to return custom types from stored procedures

    • added auto-conversion of
      java.util.Date and
      java.util.Calendar to java.sql.Date/Time/Timestamp for JDBC parameters

    • added support for WebSphere 4 to
      WebSphereNativeJdbcExtractor, autodetecting WebSphere 5 and 4 now

    • added
      to be used with WebLogicJtaTransactionManager on WebLogic 7.0

    • added support for direct JTA
      synchronization to
      AbstractLobType, as alternative to Spring transaction synchronization

    • added "flush" method to
      HibernateOperations/HibernateTemplate and JdoOperations/JdoTemplate,
      for eager flushing

    • added
      "getReportQueryIteratorByQuery" method to OJB
      PersistenceBrokerOperations and PersistenceBrokerTemplate

    • deprecated AbstractJndiLocator base
      class in favor
      of new JndiObjectLocator base class with explicit "lookup" method

    • added JndiObjectTargetSource which
      performs a fresh
      JNDI lookup for each call, allowing for hot redeployment in JNDI

    • added "cache" flag to
      JndiDestinationResolver, to
      allow for turning off the caching of Destination objects from JNDI

    • added support for ObjectMessage to
      SimpleMessageConverter, converting between Serializable objects and

    • added RemoteConnectFailureException
      RemoteLookupFailureException as RemoteAccessException subclasses

    • added JndiRmiServiceExporter,
      JndiRmiClientInterceptor, JndiRmiProxyFactoryBean (for RMI-IIOP resp.

    • added "lookupStubOnStartup",
      "cacheStub" and
      "refreshStubOnConnectFailure" flags to RmiClientInterceptor

    • added "lookupHomeOnStartup" and
      "refreshHomeOnConnectFailure" flags to

    • added
      "createMimeMessage(InputStream)" method to
      JavaMailSender, building a MimeMessage from raw MIME content

    • MimeMessageHelper creates
      "multipart/related" now,
      to make mails with inline images compatible with Outlook Express

    • added "validateAddresses" property
      MimeMessageHelper (off by default), delegating to JavaMail 1.3’s

    • added "http10Compatible" flag to
      RedirectView, to be
      turned off for sending HTTP 1.1 status code 303 rather than 302

    • added "buildPdfMetadata" callback
      AbstractPdfView, for adding meta fields like author to the iText PDF

    • added LookupDispatchActionSupport
      class to Struts
      support, analogous to ActionSupport but for LookupDispatchActions

    Read more

    Spring Framework 1.1 Release Candidate 2 Released

    We are pleased to announce that Spring
    Framework 1.1 Release Candidate 2
    is available. This will be the
    last release candidate for 1.1; release 1.1 final can be expected very

    Among the new features in this release are:

    • the
      new HTTP invoker remoting
      strategy, which uses Java serialization over HTTP (combining the
      strengths of RMI and Hessian)

    • RemoteInvocationFactory
      RemoteInvocationExecutor strategies for HTTP/RMI invoker, for
      additional invocation context

    • basic
      JSF support in the form of a
      JSF VariableResolver implementation that is aware of Spring-managed
      middle tier beans

    • form
      simplification macros for
      Velocity and FreeMarker, providing HTML input macros etc for easy form

    • DispatcherServlet
      looks for handler
      adapters, handler mappings, exception res., view res. in ancestor
      contexts as well

    • HibernateTransactionManager
      HibernateInterceptor support per-transaction entity interceptor

    • WebLogicJtaTransactionManager
      can resume a WebLogic JTA transaction even if it was marked

    • MimeMessageHelper
      "addInline" methods for adding inline elements with content IDs
      (referenced via "cid:xxx")

    • Errors
      interface provides
      "pushNestedPath"/"popNestedPath" methods, for convenient handling of
      temporary nested paths

    • Spring’s
      Resource objects support a
      "createRelative" operation, for resource paths relative to the given

    Read more

    Method Injection

    A couple of months ago, in the days before I had a blog, there was a discussion by Cedric and Bob about “Getter Injection.”

    The basic concept is that the IoC container can override abstract or concrete methods on managed objects on deployment. The container is injecting a method, such as a getter method, rather than a reference or primitive as in Setter Injection. As it happened, I was already working on a container method override mechanism for Spring 1.1, which has since been released in Spring 1.1 RC1. It’s an interesting concept, and definitely part of a complete IoC container. However, I believe that the concept is more general and needs a more general name. Also, that it should only be used in a fairly narrow range of scenarios.

    Read more