Spring Framework is composed of several well-defined modules and components. This modularity makes it possible to use as much or as little of the Spring Framework as is needed in a particular application.
It is a main part of the Spring Framework and consists of following modules –
Core: It provides the elementary part of the framework which includes the IOC and Dependency Injection features.
Beans: This module provides BeanFactory, which is a sophisticated implementation of the Factory design pattern, and helps initializing the beans as per the configuration provided by the developer in an XML file..
Context: This module extends the capability of BeanFactory and it too acts as a medium to access defined and configured objects in the Application Context XML file. It constructs on the base provided by the Core and Beans module, and adds support for internationalization, event propagation, resource loading, etc.
Language Expression: It provides a powerful expression language to query and manipulate an object at run-time. It supports all the programming operations like setting, getting, indexers, methods, arithmetic operators, etc.
The Data Access layer consists of the following modules –
JDBC: Java Database Connectivity (JDBC), this layer provides an abstraction layer of JDBC that removes the need to do traditional and complex JDBC related coding.
ORM: This module provides an abstraction layer for integration with several popular Object Relational Mapping API implementations, such as Hibernate, iBatis, SimpleORM, etc.
OXM: This module is used to convert objects into XML format. It also provides an abstraction layer, thus providing integration with various popular OXM frameworks like Castor, JAXB, XmlBeans and XStream.
JMS: This module contains features for producing and utilizing messages.
Transaction: This module provides programmatic and declarative transaction management for classes that implement special interfaces and for the POJOs.
The Web layer has several different modules that provide with the MVC implementation to build web applications, and hassle-free integration with other MVC based frameworks like Struts, JSF, etc. The layer also provides with socket based two-way communication between client and the server.
AOP: This module allows to increase modularity of our application, by separating the crosscutting concerns (transaction management, Security, Logging, etc.) from the actual business logic implementations.
Aspect: This module provides integration with AspectJ, which is yet another powerful AOP (Aspect Oriented Programming) framework apart from the one that Spring provides (Spring AOP).
Test: This module supports the testing of Spring Framework components with one of the testing frameworks, such as JUnit, TestNG, etc.
Messaging: This module has key abstractions from the Spring Integration framework, thus helping to create messaging-based applications.