The building blocks described previously make Spring a logical choice in many scenarios, from applets to full-fledged enterprise applications that use Spring's transaction management functionality and web framework integration.
Spring's declarative
transaction management features make the web application fully
transactional, just as it would be if you use EJB container-managed
transactions. All your custom business logic can be implemented with
simple POJOs and managed by Spring's IoC container. Additional services
include support for sending email and validation that is independent of
the web layer, which lets you choose where to execute validation rules.
Spring's ORM support is integrated with JPA, Hibernate, JDO and iBatis;
for example, when using Hibernate, you can continue to use your existing
mapping files and standard Hibernate
SessionFactory
configuration. Form
controllers seamlessly integrate the web-layer with the domain model,
removing the need for ActionForms
or other classes
that transform HTTP parameters to values for your domain model.
Sometimes circumstances do not allow you to completely switch to a
different framework. The Spring Framework does not
force you to use everything within it; it is not an
all-or-nothing solution. Existing front-ends built
with WebWork, Struts, Tapestry, or other UI frameworks can be integrated
with a Spring-based middle-tier, which allows you to use Spring
transaction features. You simply need to wire up your business logic using
an ApplicationContext
and use a
WebApplicationContext
to integrate your web
layer.
When you need to access existing code through web services, you can
use Spring's Hessian-
, Burlap-
,
Rmi-
or JaxRpcProxyFactory
classes. Enabling remote access to existing applications is not
difficult.
The Spring Framework also provides an access- and abstraction- layer for Enterprise JavaBeans, enabling you to reuse your existing POJOs and wrap them in stateless session beans, for use in scalable, fail-safe web applications that might need declarative security.