<?xml version="1.0" encoding="UTF-8"?>
<book xml:id="spring-framework-reference"
    xmlns="http://docbook.org/ns/docbook" version="5.0"
    xmlns:xl="http://www.w3.org/1999/xlink"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
        http://www.w3.org/1999/xlink http://www.docbook.org/xml/5.0/xsd/xlink.xsd">

  <info>
    <title>Spring Framework Reference Documentation</title>

    <productname>Spring Framework</productname>

    <releaseinfo>${version}</releaseinfo>

    <authorgroup>
      <author>
        <personname>
          <firstname>Rod</firstname>
          <surname>Johnson</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Juergen</firstname>
          <surname>Hoeller</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Keith</firstname>
          <surname>Donald</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Colin</firstname>
          <surname>Sampaleanu</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Rob</firstname>
          <surname>Harrop</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Thomas</firstname>
          <surname>Risberg</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Alef</firstname>
          <surname>Arendsen</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Darren</firstname>
          <surname>Davison</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Dmitriy</firstname>
          <surname>Kopylenko</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Mark</firstname>
          <surname>Pollack</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Thierry</firstname>
          <surname>Templier</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Erwin</firstname>
          <surname>Vervaet</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Portia</firstname>
          <surname>Tung</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Ben</firstname>
          <surname>Hale</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Adrian</firstname>
          <surname>Colyer</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>John</firstname>
          <surname>Lewis</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Costin</firstname>
          <surname>Leau</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Mark</firstname>
          <surname>Fisher</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Sam</firstname>
          <surname>Brannen</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Ramnivas</firstname>
          <surname>Laddad</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Arjen</firstname>
          <surname>Poutsma</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Chris</firstname>
          <surname>Beams</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Tareq</firstname>
          <surname>Abedrabbo</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Andy</firstname>
          <surname>Clement</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Dave</firstname>
          <surname>Syer</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Oliver</firstname>
          <surname>Gierke</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Rossen</firstname>
          <surname>Stoyanchev</surname>
        </personname>
      </author><author>
        <personname>
          <firstname>Phillip</firstname>
          <surname>Webb</surname>
        </personname>
      </author>
    </authorgroup>

    <copyright>
      <year>2004-2012</year>
    </copyright>

    <legalnotice>
      <para>Copies of this document may be made for your own use and for
      distribution to others, provided that you do not charge any fee for such
      copies and further provided that each copy contains this Copyright
      Notice, whether distributed in print or electronically.</para>
    </legalnotice>
  </info>

  <!-- front matter -->

  <toc></toc>

  <part xml:id="spring-introduction">
    <title>Overview of Spring Framework</title>

    <partintro>
      <para>The Spring Framework is a lightweight solution and a potential
      one-stop-shop for building your enterprise-ready applications. However,
      Spring is modular, allowing you to use only those parts that you need,
      without having to bring in the rest. You can use the IoC container, with
      Struts on top, but you can also use only the <link
      linkend="orm-hibernate">Hibernate integration code</link> or the <link
      linkend="jdbc-introduction">JDBC abstraction layer</link>. The Spring
      Framework supports declarative transaction management, remote access to
      your logic through RMI or web services, and various options for
      persisting your data. It offers a full-featured <link
      linkend="mvc-introduction">MVC framework</link>, and enables you to
      integrate <link linkend="aop-introduction">AOP</link> transparently into
      your software.</para>

      <para>Spring is designed to be non-intrusive, meaning that your domain
      logic code generally has no dependencies on the framework itself. In
      your integration layer (such as the data access layer), some
      dependencies on the data access technology and the Spring libraries will
      exist. However, it should be easy to isolate these dependencies from the
      rest of your code base.</para>

      <para>This document is a reference guide to Spring Framework features.
      If you have any requests, comments, or questions on this document,
      please post them on the user mailing list or on the support forums at
      <link xl:href="http://forum.springsource.org/"></link>.<!-- Missing link above. PDF shows it as http://forum.springsource.org/ --></para>
    </partintro>

    <xi:include href="overview.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-whats-new">
    <title>What's New in Spring 3</title>

    <xi:include href="new-in-3.0.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <xi:include href="new-in-3.1.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <xi:include href="new-in-3.2.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-core">
    <title>Core Technologies</title>

    <partintro>
      <para>This part of the reference documentation covers all of those
      technologies that are absolutely integral to the Spring
      Framework.</para>

      <para>Foremost amongst these is the Spring Framework's Inversion of
      Control (IoC) container. A thorough treatment of the Spring Framework's
      IoC container is closely followed by comprehensive coverage of Spring's
      Aspect-Oriented Programming (AOP) technologies. The Spring Framework has
      its own AOP framework, which is conceptually easy to understand, and
      which successfully addresses the 80% sweet spot of AOP requirements in
      Java enterprise programming.</para>

      <para>Coverage of Spring's integration with AspectJ (currently the
      richest - in terms of features - and certainly most mature AOP
      implementation in the Java enterprise space) is also provided.</para>

      <para>Finally, the adoption of the test-driven-development (TDD)
      approach to software development is certainly advocated by the Spring
      team, and so coverage of Spring's support for integration testing is
      covered (alongside best practices for unit testing). The Spring team has
      found that the correct use of IoC certainly does make both unit and
      integration testing easier (in that the presence of setter methods and
      appropriate constructors on classes makes them easier to wire together
      in a test without having to set up service locator registries and
      suchlike)... the chapter dedicated solely to testing will hopefully
      convince you of this as well.</para>

      <itemizedlist>
        <listitem>
          <para><xref linkend="beans" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="resources" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="validation" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="expressions" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="aop" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="aop-api" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="testing" /></para>
        </listitem>
      </itemizedlist>
    </partintro>

    <xi:include href="beans.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="resources.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="validation.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="expressions.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="aop.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="aop-api.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="testing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-data-tier">
    <title>Data Access</title>

    <partintro xml:id="spring-data-tier-intro">
      <para>This part of the reference documentation is concerned with data
      access and the interaction between the data access layer and the
      business or service layer.</para>

      <para>Spring's comprehensive transaction management support is covered
      in some detail, followed by thorough coverage of the various data access
      frameworks and technologies that the Spring Framework integrates
      with.</para>

      <itemizedlist>
        <listitem>
          <para><xref linkend="transaction" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="dao" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="jdbc" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="orm" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="oxm" /></para>
        </listitem>
      </itemizedlist>
    </partintro>

    <xi:include href="transaction.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="dao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="jdbc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="orm.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="oxm.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-web">
    <title>The Web</title>

    <partintro>
      <para>This part of the reference documentation covers the Spring
      Framework's support for the presentation tier (and specifically
      web-based presentation tiers).</para>

      <para>The Spring Framework's own web framework, <link
      linkend="mvc">Spring Web MVC</link>, is covered in the first couple of
      chapters. A number of the remaining chapters in this part of the
      reference documentation are concerned with the Spring Framework's
      integration with other web technologies, such as <link
      linkend="struts">Struts</link> and <link linkend="jsf">JSF</link> (to
      name but two).</para>

      <para>This section concludes with coverage of Spring's MVC <link
      linkend="portlet">portlet framework</link>.</para>

      <itemizedlist>
        <listitem>
          <para><xref linkend="mvc" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="view" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="web-integration" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="portlet" /></para>
        </listitem>
      </itemizedlist>
    </partintro>

    <xi:include href="mvc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="view.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="web-integration.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-integration">
    <title>Integration</title>

    <partintro>
      <para>This part of the reference documentation covers the Spring
      Framework's integration with a number of Java EE (and related)
      technologies.</para>

      <itemizedlist>
        <listitem>
          <para><xref linkend="remoting" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="ejb" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="jms" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="jmx" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="cci" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="mail" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="scheduling" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="dynamic-language" /></para>
        </listitem>

        <listitem>
          <para><xref linkend="cache" /></para>
        </listitem>
      </itemizedlist>
    </partintro>

    <xi:include href="remoting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="ejb.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="jms.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="jmx.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="cci.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="mail.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="scheduling.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="dynamic-languages.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="cache.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>

  <part xml:id="spring-appendices">
    <title>Appendices</title>

    <xi:include href="classic-spring.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="classic-aop-spring.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="migration-3.1.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="migration-3.2.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="xsd-configuration.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="xml-custom.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="spring.tld.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />

    <xi:include href="spring-form.tld.xml"
                xmlns:xi="http://www.w3.org/2001/XInclude" />
  </part>
</book>
