Spring framework is designed in modular fashion from which a programmer can choose the applicable modules and ignore the rest. Spring framework modules are divided into categories given below.
Spring framework architecture Diagram:
1. Test:
Spring test module provides the supports for testing of spring components with JUnit or TestNG frameworks.
2. Core Container:
Spring core container contains the following:
a. Core: Core module provides the fundamental features of spring framework like IoC and DI.
b. Bean: Bean module provides the BeanFactory.
c. Context: Context module provides a way to access any object. ApplicationContext interface is the main part of Context module.
d. Expression language: Expression language module provides a way to manipulate objects at runtime.
3. Data Access/Integration contains the following:
a. JDBC: JDBC modules provides a JDBC-abstraction layer.
b. ORM: ORM provides integration layers for object-relational mapping APIs like JPA, and Hibernate etc.
c. OXM: OXM module provides an abstraction layer for Object/XML mapping APIs like JAXB, Castor and XMLBeans etc.
d. JMS: JMS module provides feature of message processing.
e. Transaction: Transaction module provides the facility of transaction management for classes like POJOs etc.
4. Web:
Web module consist of Web, Web-Servlet, Web-Struts, Web-Socket and Web-Portlet which provides the facility of creating web applications.
5. AOP:
AOP module provides aspect-oriented programming implementation which provides the facility to define method-interceptors.
6. Instrumentation:
Instrumentation module provides class instrumentation support and class loader implementations