In Spring Framework, there consists of a lot of modules that are grouped in Data Access/Integration, Web, Core container as well as AOP, Aspects, Instrumentation, and test module. All these Spring Modules are based on their primary feature.
An overview of the various Spring Modules that come under the Spring Framework is illustrated below.
Now, the detailed description of the above-illustrated Spring modules are given below
Test Module supports testing with JUnit and TestNG. It provides loading of Spring Application Contexts and caching consistently. It also includes several mock objects that are useful in a lot of testing scenarios.
Spring Core Container contains modules such as core, beans, context, and expression language (EL). Core and beans modules provide features like IOC and Dependency Injection. The Context Module supports EJB, JMS, internationalization (I18N), Basic Remoting.
An Expression Language module under the core container provides an effective expression language for querying and manipulating an object. This Module works as an extensive feature of the EL in JSP. This Module allows you to set and access property values, collections, and indexers, method invocation, named variables, arithmetic and logical operators, retrieval of objects by name, etc.
AOP module stands for aspect-oriented programming that allows you to use features like Advice, Pointcuts, etc; to decouple the code. It also provides you to implement an AOP Alliance-compliant aspect-oriented programming. This module’s source-level meta-data feature allows you to incorporate all kinds of behavioral information into the code that is much like the .NET attributes.
The Aspects module provides integrational support to AspectJ.
In the Instrumentation module, there is support for class instrumentation as well as classloader implementation that can be used in the application servers.
The Web layer contains Web, Web-Servlet, and Web-Portlet modules. The Web module of the Spring framework provides integration features to upload a file of multiple parts, to initialize the IoC container using servlet listeners and web-oriented application context. Spring’s Web module also contains the web-related parts of Spring's remoting support.
Spring’s Web-Servlet module provides a Model-View-Controller (MVC) implementation for web applications. It provides a clear partition between domain model code and web forms which act as a gateway to use all the other features of the Spring framework. The Web-Portlet module provides MVC implementation that is utilized in a Portlet environment.
Data Access/Integration layer includes JDBC, ORM, OXM, JMS, and Transaction modules. These modules usually provide support for database interaction. The JDBC module provides a JDBC-abstraction layer to eliminate the use of tedious and lengthy JDBC coding and parsing of database-vendor error codes. The ORM module provides object-relational mapping APIs, that provide integration support to JPA, JDO, Hibernate, and iBatis.
The OXM module gives you an abstraction layer for utilizing Object/XML mapping implementations. This Module supports JAXB, Castor, XMLBeans, JiBX, and XStream.
The JMS module provides support for the Java Messaging Service. This module allows both producing and consuming messages.
The Transaction module supports declarative transaction management. This functionality not only supports classes that implement special interfaces but for all plain old java objects (POJOs)