|
The Spring Framework is an
open source application framework for the Java
platform. The first version was written by Rod
Johnson, who first released it with the publication
of his book Expert One-on-One Java EE Design and
Development (Wrox Press, October 2002). A port
is available for the .NET Framework.
The framework was first released under
the Apache 2.0 license in June 2003. The first
milestone release was 1.0 which was released in
March 2004 with further milestone releases in
September 2004 and March 2005.
Although the Spring Framework does
not enforce any specific programming model it
has become widely popular in the Java community
primarily as an alternative and replacement for
the Enterprise JavaBean model. By design, the
framework offers a lot of freedom to Java developers
yet provides well-documented and easy to use solutions
for common practices in the industry.
While the core features of the Spring
Framework are usable in any Java application there
are many extensions and improvements for building
web-based applications on top of the Java Enterprise
platform. Spring has gained a lot of popularity
because of this and is recognized by vendors as
a strategically important framework
Key features
JavaBeans-based configuration management, applying
Inversion-of-Control principles, specifically
using the Dependency Injection technique. This
aims to reduce dependencies of components on specific
implementations of other components.
A core bean factory, which is globally usable.
Generic abstraction layer for database transaction
management.
Built-in generic strategies for JTA and a single
JDBC DataSource. This removes the dependency on
a Java EE environment for transaction support.
Integration with persistence frameworks Hibernate,
JDO, iBATIS, db4o and JPA.
MVC web application framework, built on core Spring
functionality, supporting many technologies for
generating views, including JSP, FreeMarker, Velocity,
Tiles, iText, and POI.
Extensive aspect-oriented programming framework
to provide services such as transaction management.
As with the Inversion-of-Control parts of the
system, this aims to improve the modularity of
systems created using the framework
Modules of the Spring Framework
The Spring Framework can be considered as a collection
of smaller frameworks or frameworks-in-the-framework.
Most of these frameworks are designed to work
independently of each other yet provide better
functionalities when used together. These frameworks
are divided along the building blocks of typical
complex applications:
Inversion of Control container: configuration
of application components and lifecycle management
of Java objects.
Aspect-oriented programming framework: working
with functionalities that cannot be implemented
with Java's object-oriented programming capabilities
without making sacrifices.
Data access framework: working with relational
database management systems on the Java platform
using JDBC and Object-relational mapping tools
providing solutions to technical challenges that
are reusable in a multitude of Java-based environments.
Transaction management framework: harmonization
of various transaction management API's and configurative
transaction management orchestration for Java
objects.
Model-view-controller framework: HTTP and Servlet
based framework providing many hooks for extension
and customization.
Remote Access framework: configurative RPC-style
export and import of Java objects over computer
networks supporting RMI, CORBA and HTTP-based
protocols including web services (SOAP).
Authentication and authorization framework: configurative
orchestration of authentication and authorization
processes supporting many popular and industry-standard
standards, protocols, tools and practices via
the Acegi sub-project.
Remote Management framework: configurative exposure
and management of Java objects for local or remote
configuration via JMX.
Messaging framework: configurative registration
of message listener objects for transparent message
consumption from message queues via JMS, improvement
of message sending over standard JMS API's.
Testing framework: support classes for writing
unit tests and integration tests.
|