|
|
Architectural benefits of Spring
Before we get down to specifics, let's look at some of the benefits Spring can
bring to a project:
-
Spring can effectively organize your middle tier objects, whether or not you
choose to use EJB. Spring takes care of plumbing that would be left up to
you if you use only Struts or other frameworks geared to particular J2EE
APIs. And while it is perhaps most valuable in the middle tier, Spring's
configuration management services can be used in any architectural layer, in
whatever runtime environment.
-
Spring can eliminate the proliferation of Singletons seen on many projects.
In my experience, this is a major problem, reducing testability and object
orientation.
-
Spring can eliminate the need to use a variety of custom properties file
formats, by handling configuration in a consistent way throughout
applications and projects. Ever wondered what magic property keys or system
properties a particular class looks for, and had to read the Javadoc or even
source code? With Spring you simply look at the class's JavaBean properties
or constructor arguments. The use of Inversion of Control and
Dependency Injection (discussed below) helps achieve this
simplification.
-
Spring can facilitate good programming practice by reducing the cost of
programming to interfaces, rather than classes, almost to zero.
-
Spring is designed so that applications built with it depend on as few of
its APIs as possible. Most business objects in Spring applications have no
dependency on Spring.
-
Applications built using Spring are very easy to unit test.
-
Spring can make the use of EJB an implementation choice, rather than the
determinant of application architecture. You can choose to implement
business interfaces as POJOs or local EJBs without affecting calling code.
-
Spring helps you solve many problems without using EJB. Spring can provide
an alternative to EJB that's appropriate for many applications. For example,
Spring can use AOP to deliver declarative transaction management without
using an EJB container; even without a JTA implementation, if you only need
to work with a single database.
-
Spring provides a consistent framework for data access, whether using JDBC
or an O/R mapping product such as TopLink, Hibernate or a JDO
implementation.
-
Spring provides a consistent, simple programming model in many areas, making
it an ideal architectural "glue." You can see this consistency in the Spring
approach to JDBC, JMS, JavaMail, JNDI and many other important APIs.
Spring is essentially a technology dedicated to enabling you to build
applications using POJOs. This desirable goal requires a sophisticated
framework, which conceals much complexity from the developer.
Thus Spring really can enable you to implement the simplest possible solution
to your problems. And that's worth a lot.
|