Spring 2.5 saw the introduction of core support for annotations. It also brought the “schema-
fication” of more technologies. The release broadened the presence of Spring, making it easier to
leverage it. It set the foundations for Spring 3.0.
Other projects, such as the Spring model-view-controller (MVC), have evolved concurrently
throughout the development of the core Spring framework, growing in tandem with—and sometimes
influencing—the core Spring framework. The last few years have seen the introduction of more than
five new major frameworks: Spring Integration; Spring Batch; the Spring/Flex integration; Spring Faces
for JSF; and even a radically different version of Spring MVC, which many refer to as @MVC because
of the annotation-centric approach that the framework espouses. These frameworks are often single-
focused and extremely adept, built using the idioms you've come to take for granted in the core Spring
framework such as IoC, schema, annotation and, of course, a POJO-friendly engine.
Indeed, the introduction of drastically new technologies has occurred in the supplementary
frameworks, leaving the core stable. Spring 3.0 is, in many ways, an evolution of the ideas introduced
in previous releases, a unifying release. The core Spring framework has remained pretty stable and
backward compatible for the last few releases. Spring 3.0 represents a chance to clean house; to
consolidate or deprecate as necessary. Spring 3.0 is also a chance to clean up and update some
technologies debuted in earlier releases.
This release also brings the framework forward in keeping with the latest in technology. Sun has
end-of-life'd Java 1.4, which is as fitting a reason as any for the Spring framework to drop official support
for Java 1.4 and update the core framework for Java 1.5. Initial support for Java EE 6 is included, and
functionality that evolved from other Spring frameworks in some cases has been folded into the core (for
example, the Spring object-to-XML support and the new expression language[EL]).
Succinctly: Spring 3.0 represents a major leap forward.
Upgrades to the SpringSource Portfolio
Although there are many new projects coming out of SpringSource, some of them are simply out of the
scope for this topic. (Thank goodness! We'd need two volumes!) It's important to know what's out there,
One of the big-ticket items coming in Spring 3.0 is the support for Representational State Transfer
(REST) in Spring MVC. REST will be supported fully, with annotations that are available on controller
methods to specify which verb to respond to for which resource. This support will also see the
introduction of a RestTemplate , in the same style of JmsTemplate or HibernateTemplate , which will
facilitate accessing remote services.
What Is REST?
Representational State Transfer (REST) is an architectural style created by Roy Fielding (a principal author
of HTTP 1.0 and 1.1). REST prescribes the most useful features of the Internet, wherein resources are
accessed by unique URLs whose state may be modified with different types of requests: you would POST to
add data to a resource, GET to read it, and so on.
As it applies to Spring, REST and RESTlets are part of a larger trend in the enterprise space (including a
Java EE specification called JAX-RS, JSR-311) of enabling services whose endpoints are exposed on a URL
as an HTTP endpoint. Because the platform is a well-known standard, REST services tend to be very open
and very flexible.