The Spring Blog

Engineering
Releases
News and Events

Spring Framework 1.1 Final Released

We
are pleased to announce that Spring
Framework 1.1
(final)
has
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
    WebLogicServerTransactionManagerFactoryBean,
    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
    ObjectMessages



  • added RemoteConnectFailureException
    and
    RemoteLookupFailureException as RemoteAccessException subclasses

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

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

  • added "lookupHomeOnStartup" and
    "refreshHomeOnConnectFailure" flags to
    AbstractRemoteSlsbInvokerInterceptor



  • 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
    to
    MimeMessageHelper (off by default), delegating to JavaMail 1.3’s
    "validate"



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

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

  • 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
soon.




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
    and
    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
    building

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

  • HibernateTransactionManager
    and
    HibernateInterceptor support per-transaction entity interceptor
    instances

  • WebLogicJtaTransactionManager
    which
    can resume a WebLogic JTA transaction even if it was marked
    rollback-only

  • MimeMessageHelper
    provides
    "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
    one

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...

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
include:


  • 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
    final.

  • 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
    support

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

Read more...

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
    flushes
    the JavaBeans Introspector cache
    for proper garbage collection on shutdown

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

  • AbstractXmlApplicationContext
    uses
    PathMatchingResourcePatternResolver for Ant-style config location
    patterns

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

  • QuartzJobBean
    applies
    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
    AbstractLobCreatingPreparedStatementCallback

  • 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
    detects
    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.na*"/"person.address.*"-style field
    patterns to BindTag’s "path" attribute

  • Added
    Struts
    DelegatingRequestProcessor and
    DelegatingTilesRequestProcessor as alternatives to
    DelegatingActionProxy

Read more...

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
    DelegatingActionProxy,
    superseding Don Brown’s Spring Struts Plugin

  • reworked
    ComponentControllerSupport
    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.
    "/WEB-INF/*-context.xml")

  • SQLErrorCodesFactory
    caches database
    product name to avoid unnecessary
    metadata lookups

  • factored
    out message code resolution
    into MessageCodesResolver
    strategy

  • refined
    internals of the AOP
    framework, for clearer subpackage
    interdependencies

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

  • refined
    AbstractMessageSource
    internals, for clearer handling of
    fallbacks

Read more...

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
    demarcation

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

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

  • 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
    management

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

  • 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

Read more...

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,
    resolving
    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
    hierarchy

  • extended mapping
    configuration options in
    LocalSessionFactoryBean

  • metadata support
    uses latest Commons Attributes
    snapshot

  • VelocityView
    supports Velocity Tools 1.1

Read more...