JSF etc., are very good web tier frameworks but when we use these framework, we have to provide additional
framework to deal with enterprise tier that integrates well with these framework. Spring tries to address this
problem by providing a comprehensive framework, which includes
1. a core bean container,
2. an MVC framework,
3. an AOP integration framework,
4. a JDBC integration framework and
5. an EJB integration framework.
6. It also provides integration modules for O/R mapping tools like Hibernate and JDO.
Thus spring framework can be thought of as a layered architecture consisting of seven well defined modules.
The function of each component is as follows:

1. Spring Core:
The core container provides the fundamental functionality of Spring. It`s primary component is the
`BeanFactory`, an implementation of the Factory pattern. The BeanFactory applies the IOC (Inversion of
Control) pattern to separate an application`s configuration and dependency specification from the actual
application code.
2. Spring Context/Application Context:
The Spring context is a configuration file that provides context information to the Spring framework . The
Spring context supplies enterprise services such as JNDI access, EJB integration, e-mail, internalization,
validation, and scheduling functionality.
3. Spring AOP:(Aspect-Oriented Programming)
The Spring AOP module integrates aspect-oriented programming functionality directly into the Spring
framework, through its configuration management feature. As a result we can easily AOP-enable any object
managed by the Spring framework. The Spring AOP module provides transaction management services for
objects in any Spring-based application. With Spring AOP we can incorporate declarative transaction
management into our applications without relying on EJB components.
The Spring AOP module also introduces metadata programming to Spring. Using this we can add annotation
to the source code that instructs Spring on where and how to apply aspects.
4. Spring DAO:
The Spring`s JDBC and DAO abstraction layer offers a meaningful exception hierarchy for managing the
database connection, exception handling and error messages thrown by different database vendors. The
exception hierarchy simplifies error handling and greatly reduces the amount of code that we need to write, such
as opening and closing connections. This module also provide transaction management services for objects in a
spring application.
5. Spring ORM:
The Spring framework can be integrated to several ORM frameworks to provide Object Relational tool,
including JDO, Hibernate, OJB and iBatis SQL Maps.
6. Spring Web:
The Web context module builds on top of the application context module, providing contexts for Web-based
applications. As a result, the Spring framework supports integration with Jakarta Struts, JSF and webworks.
The Web module also eases the tasks of handling multipart requests and binding request parameters to domain
objects.
7. Spring Web MVC:
The MVC framework is a full-featured MVC implementation for building Web applications. The MVC
framework is highly configurable via strategy interfaces and accommodates numerous view technologies
including JSP, Velocity, Tiles and the generation of PDF and Excel Files
;-) There is a great variety of technologies in the web-tier like MVC PATTERN, STRUTS, JSF, WEB-WORK,
JSP, TAPESTRY, FREEMARKER etc. Developers are now puzzled and confused about the relative merits and
demerits of all these. Once they choose a technology and start implementing and later want to change over to
another technology, it is very difficult. But, as Spring offers modules for all the above technologies, it is most
often simply changing the configuration file. With this approach, it is even possible for a development team to
try and test a given task in all the above forms and see the effect and performance before deciding the choice.
Spring offers its own version of MVC architecture. It also offers adapters for Struts.
