The Spring framework is a layered architecture which consists of several modules. All modules are built on the top of its core container. These modules provide everything that a developer may need for use in the enterprise application development. He is always free to choose what features he needs and eliminate the modules which are of no use. It's modular architecture enables integration with other frameworks without much hassle.
The Core Module: Provides the Dependency Injection (DI) feature which is the basic concept of the Spring framework. This module contains the BeanFactory, an implementation of Factory Pattern which creates the bean as per the configurations provided by the developer in an XML file.
AOP Module: The Aspect Oriented Programming module allows developers to define method-interceptors and point cuts to keep the concerns apart. It is configured at run time so the compilation step is skipped. It aims at declarative transaction management which is easier to maintain.
DAO Module: This provides an abstraction layer to the low level task of creating a connection, releasing it etc. It also maintains a hierarchy of meaningful exceptions rather than throwing complicated error codes from specific database vendors. It uses AOP to manage transactions. Transactions can also be managed programmatically.
ORM Module: Spring doesn’t provides its own ORM implementation but offers integrations with popular Object Relational mapping tools like Hibernate, iBATIS SQL Maps, Oracle TopLink and JPA etc.
JEE Module: It also provides support for JMX, JCA, EJB and JMS etc. In lots of cases, JCA (Java EE Connection API) is much like JDBC, except where JDBC is focused on database JCA focus on connecting to legacy systems.Web Module: Spring comes with MVC framework which eases the task of developing web applications. It also integrates well with the most popular MVC frameworks like Struts, Tapestry, JSF, Wicket etc.