The Spring framework is growing. While Java EE has largely been a prescription of architecture (the Java
Pet Store and the Sun blueprints, for example), the Spring framework has always been about choice. Java
EE focused on a best-practices-oriented solution, largely to the detriment of alternative solutions. When
the Spring framework debuted, few would have agreed that Java EE represented the best-in-breed
architectures of the day. Each release sees the introduction of a myriad of new features designed to both
simplify and enable solutions.
With Spring 2.0 and later, the Spring platform started targeting multiple platforms. The framework
provided services on top of existing platforms, as always, but was decoupled from the underlying
platform wherever possible. Java EE is still a major reference point, but not the only target. OSGi (a
promising technology for modular architectures) has been a big part of the SpringSource strategy.
Additionally, with the introduction of annotation-centric frameworks and XML schemas, SpringSource
could build frameworks that effectively modeled the domain of the problem itself, in effect creating
DSLs. In short order, frameworks built on top of the Spring framework emerged supporting application
integration, batch processing, Flex integration, OSGi, and much more.
When it came time to update the seminal Spring Recipes , we decided to split the topic into two, with
focuses on both enterprise programming and web programming. This topic is for the enterprise
programmer, noble and gray-haired. For every pretty widget deployed on some application UI, there is
business logic driving it, and this topic discusses solutions for building the heart of any application. This
topic walks the reader from the basics (databases, remoting, messaging, and transactions) to the more
nuanced (EAI using Spring Integration, BPM, batch processing, and distributed computing). A sizable
portion of this topic focuses not on simplifying APIs on top of the Java EE platform, but enabling API (for
which, quite simply, there is no good solution in Java EE).
The topics in this topic are introduced by complete and real-world code examples that you can
follow step by step. Instead of abstract descriptions on complex concepts, you will find live examples in
this topic. When you start a new project, you can consider copying the code and configuration files from
this topic and then modifying them for your needs. This can save you a great deal of work when creating
a project from scratch.
Who This Topic Is For
This topic is for Java developers who want to simplify their architecture and solve problems outside the
scope of the Java EE platform. If you are already a developer using Spring in your projects, the more
advanced chapters present a discussion of newer technologies that you might not have known about.
You can also use this topic as a reference and you'll find the code examples very useful.
This topic assumes that you have some familiarity with Spring, although there is a breakneck speed
introduction and refresher. It also assumes that you have a feel for the basic services offered by the
Spring framework and want to expand your toolkit to include some of the new frameworks coming from