The Spring Blog

News and Events

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
  •

    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
  •

    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


    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


    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.


    Spring Framework 1.1 Release Candidate 1 Released

    The Spring team are happy to announce the first release candidate of
    Spring 1.1

    New features and enhancements in Spring
    1.1 RC1

    • IoC
      container supports Method
      Injection: the overriding of concrete or abstract methods, typically to
      look up a dependency managed by the container. This means even less
      need to implement Spring-specific interfaces such as BeanFactoryAware.

    • The
      IoC container can now obtain
      objects from static factory methods as well as constructors. This
      enhancement allows excellent AspectJ integration: it is now possible to
      configure AspectJ aspects using Spring Dependency Injection, like any
      object. We plan to provide examples of AspectJ integration before 1.1

    • Support
      for sending and receiving
      JMS messages

    • Support
      for Apache OJB as an ORM
      alternative, within Spring’s consistent data access abstraction

    • Significantly
      improved JDO support

    • Greater
      flexibility in translating
      SQLExceptions, and other JDBC enhancements

    • Support
      for nested transactions and
      savepoints when working with JDBC. Declarative transaction management
      can support nested transactions.

    • AOP
      proxies are now serializable if
      all Advisors and target are serializable

    • Improved
      Velocity and FreeMarker

    • Reworked
      parent/child bean
      definition concept: a child can now override any inherited settings.
      This can be used to simplify configuration.


    Spring Framework 1.0.2 Released

    We are pleased to announce the release of Spring
    Framework 1.0.2.

    This release introduces a variety of enhancements throughout the
    framework, plus some minor bugs fixes.

    Among the enhancements in this
    release are:

    • New
      "mock" source tree and
      "spring-mock" jar file, containing JNDI
      and Servlet API mocks for usage in applications 

    • CachedIntrospectionResults
      the JavaBeans Introspector cache
      for proper garbage collection on shutdown

    • Added
      ObjectFactory interface and
      for non-intrusive creation of prototype beans

    • AbstractXmlApplicationContext
      PathMatchingResourcePatternResolver for Ant-style config location

    • Added
      support for "xxx*" field
      patterns to BindException’s
      "getFieldErrors" and "getFieldError" methods

    • QuartzJobBean
      SchedulerContext entries as bean properties,
      just like it also does for JobDataMap entries

    • Added
      UserCredentialsDataSourceAdapter, for transparently appying
      username and password to target DataSource calls

    • Added
      RowMapperResultReader, to be
      used instead of a custom
      RowCallbackHandler when mapping rows to objects

    • Added
      AbstractLobStreamingResultSetExtractor and

    • Reworked
      "imagedb" sample app, with
      a redesigned implementation of
      the DefaultImageDatabase class

    • iBATIS
      SQL Maps 2.0 integration
      classes support per-SqlMapClient
      DataSource and lazy loading of paginated lists

    • DispatcherServlet
      ViewResolvers by type to allow for
      ViewResolver chaining (respecting order values)

    • added
      "doSubmitAction" template
      method to SimpleFormController, for
      submit actions without caring about ModelAndView

    • AbstractWizardFormController
      optionally supports "_page" request
      parameter, for proper handling of back button usage

    • Added
      support for
      "*"/"person.address.*"-style field
      patterns to BindTag’s "path" attribute

    • Added
      DelegatingRequestProcessor and
      DelegatingTilesRequestProcessor as alternatives to


    Spring Framework 1.0.1 Released

    We are pleased to announce the release of Spring
    Framework 1.0.1.

    This is a bugfix and minor enhancement release;

    the most
    important fixes and new features are:

    • added
      Struts ActionSupport and
      DispatchActionSupport base classes, for
      easy access to a Spring context

    • added
      Struts ContextLoaderPlugIn and
      superseding Don Brown’s Spring Struts Plugin

    • reworked
      class for Tiles to be compatible
      with both Struts 1.1 and Struts 1.2

    • fixed
      Hibernate/JTA synchronization
      cleanup in case of Hibernate
      flushing failure on commit

    • added
      support for transaction-scoped
      Hibernate Sessions with plain JTA
      or EJB CMT, without JtaTransactionManager

    • fixed
      JdbcTemplate’s "queryForList"
      to correctly handle a single row
      with a single column as result

    • XmlApplicationContexts
      support file
      patterns as config locations (e.g.

    • SQLErrorCodesFactory
      caches database
      product name to avoid unnecessary
      metadata lookups

    • factored
      out message code resolution
      into MessageCodesResolver

    • refined
      internals of the AOP
      framework, for clearer subpackage

    • refined
      support for array/List/Map
      properties in BeanWrapperImpl

    • refined
      internals, for clearer handling of


    Spring Framework 1.0 Final Released

    We are pleased to announce that Spring
    Framework 1.0 final

    has just been released.

    1. SCOPE

    • the most sophisticated lightweight
      container available today, with various flavors of setter and
      constructor injection

    • AOP interception framework based on
      the AOP Alliance interfaces, integrated with the core container

    • JNDI support classes, allowing for
      easy wiring of Spring-managed beans with JNDI-located objects

    • application context concept,
      providing resource loading and message access abstractions

    • generic transaction management with
      pluggable strategies, supporting declarative and programmatic

    • support for source-level metadata,
      with Commons Attributes as default implementation (e.g. for transaction

    • generic DAO support, providing a
      generic data access exception hierarchy for use with any data access

    • JDBC abstraction that simplifies
      resource and error handling, also covering BLOB/CLOB support

    • Hibernate support, providing
      SessionFactory management and transaction-scoped ThreadLocal Sessions

    • support classes for JDO 1.0 and
      iBATIS SQL Maps 1.3/2.0, integrated with Spring’s transaction

    • mail sender abstraction, with
      special support for JavaMail including convenient handling of file

    • scheduling support for Quartz and
      Timer, making it easy to invoke methods of Spring-managed beans

    • remoting support for RMI, JAX-RPC
      and Caucho’s Hessian/Burlap, for easy exposure of Spring-managed beans

    • convenience classes for accessing
      and implementing EJBs, both local and remote

    • web application context, for
      loading a Spring application context in a web environment

    • flexible web MVC framework, built
      on strategy interfaces and integrated with various view technologies


    Spring Framework 1.0 Release Candidate 2 Released

    We are pleased to announce that
    Spring Framework 1.0 Release Candidate 2
    has just been released. RC2 covers all features targeted for 1.0 final,
    which should be released soon.

    Changes since Release Candidate 1 include:

    • scheduling
      support via Quartz and Timer

    • support for the
      SqlMapClient API of iBATIS SQL Maps 2

    • JdbcTemplate
      convenience methods, taking prepared
      statement arguments as Object array

    • support for
      custom RMI socket factories and
      additional RMI invocation parameters

    • PreferencesPlaceholderConfigurer,
      placeholders via J2SE 1.4 Preferences

    • optional "type"
      attribute for "constructor-arg" tag
      in XML bean definitions

    • revised
      BeanFactoryLocator implementations

    • simplified AOP
      Advisor interface hierarchy

    • revised
      DataFieldMaxValueIncrementer implementation

    • extended mapping
      configuration options in

    • metadata support
      uses latest Commons Attributes

    • VelocityView
      supports Velocity Tools 1.1