Core Containe

The core container provides the basic functionality of the Spring framework and is the foundation upon which other modules are built, It consists of spring-core, spring-beans, spring-context, spring-context-support, and spring-expression (expression Language, SpEL). Spring-beans and spring-core are the core modules of the Spring framework.

spring-core

Provides the basic components of the framework, including Inversion of Control (IOC) and Dependency Injection (DI) capabilities.

spring-beans

The BeanFactory interface is the core interface in the Spring framework and is a classic implementation of the factory pattern. The BeanFactory uses control flipping to separate the configuration and dependency specifications of the application from the actual application code. However, the BeanFactory container does not automatically create the instantiated Bean after it is instantiated. Only when the Bean is used, the BeanFactory container will instantiate the Bean and assemble its dependencies.

spring-context

The spring-Context module framework, on top of the Spring-core and Spring-Beans modules, provides a framework for accessing arbitrary objects defined and configured. It extends the BeanFactory by adding Bean lifecycle control, framework event system, and resource loading transparency.

ApplicationContext is the core interface of this module. It is a subclass of BeanFactory. Different from BeanFactory, ApplicationContext automatically instantiates all singleton beans and assembs their dependencies. Leave it in a standby state.

spring-context-support

Used to integrate common third-party libraries into the Spring application context. This module provides support for caching, task scheduling, mail access and so on.

spring-expression

This module is an extension of the unified expression language EL specified in the JSP2.1 specification. It provides a powerful expression language to support run-time query and manipulation of running objects. The language supports setting and getting attribute values, attribute assignment, method calls, accessing the contents of arrays, collections, and indexers, logical and arithmetic operations, variable naming, and retrieving objects by name from Spring’s IOC container. It also supports list projection, selection, and common list aggregation.

Its syntax is similar to traditional EL, but provides additional functionality. The best are function calls and simple string template functions. The features of the language are designed to meet the needs of Spring products and make it very easy to interact with Spring IOC.

AOP and device Support (AOP)

It consists of spring-AOP, Spring-Aspects and Spring-Instrument modules.

spring-aop

Spring-aop is another core module of Spring that provides a programmatic implementation of aop’s facets. As one of the most influential programming ideas after OOP, AOP has greatly expanded the way people think about programming.

In Spring, a series of CROSScutting implementations of AOP, such as pre-notification, return notification, and exception notification, are designed based on JDK dynamic proxy technology. Using the Pointcut interface to match pointcuts, you can use existing pointcuts to design cross-sections; You can also extend the approach to cut in according to requirements, separating the code by function for clean decoupling.

spring-aspects

It provides integration with AspectJ, mainly providing a variety of implementation methods for AOP.

spring-instrument

This module is a support module for Spring-AOP, providing Instrumentation support and the implementation of class loaders. The main effect on JVM startup, generation of a proxy class, programmers through the proxy class at run time to modify the bytes of the class, thus changing the function of a class, AOP function.

Data Access/Integration

It consists of spring-JDBC, spring-ORM, spring-OXM, spring-JMS, and spring-TX.

spring-jdbc

The Spring-JDBC module is the JDBC abstraction layer provided by Spring, eliminating tedious coding and database vendor-specific error code parsing. Used to simplify JDBC, mainly provide template method, and relational database objectification of JDBC to simplify JDBC programming way, transaction management, the main implementation classes are JdbcTemplate, SimpleJdbcTemplate and NamedParameterJdbcTemplate.

spring-orm

Spring-orm module is an ORM support module, mainly integrating Hibernate, Java Persistence API(JPA) and Java Data Object(JDO) for resource management, Data access Object(DAO) implementation and transaction strategy.

spring-oxm

The Spring-OXM module provides an abstraction layer to support OBJECT-to-XML-Mapping (OXM), such as JAXB, Castor, XMLBeans, JiBX, and XStream.

spring-jms

The Spring-JMS module (Java Message Service) is a Java messaging Service that can send and receive messages. Since Spring Framework 4.1, it also provides an inheritance of the Spring-Messaging module.

spring-tx

The Spring-TX module is the Spring-JDBC transaction control implementation module that supports programmatic and declarative transaction management for implementing all interfaces and all POJO(plain Java object) classes.

Web

It consists of Spring-WebSocket, spring-WebMVC, Spring-Web and Spring-WebFlux

spring-web

The Spring-Web module provides the most basic web support for Spring. It is built on the core container, using servlets or Listeners to initialize the IOC container and the Web application context, automatically loading the WebApplicationContext. It also includes web-related support, such as the Struts integration class, the file upload support class, the FIlter class, and a number of helper classes.

spring-webmvc

Also known as the Web-Servlet module, it contains Spring MVC and REST Web Service implementations for Web applications. The Spring MVC Framework provides a clear separation between domain model code and Web forms and integrates with all the other features of the Spring Framework.

spring-websocket

New module after Spring4.0, realize duplex asynchronous communication protocol, realize WebSocket and SocketJS, provide Socket communication and Web push function.

spring-webflux

Reactive Is a new non-blocking functional Web framework for building asynchronous, non-blocking, event-driven services that scale very well.

Messaging

spring-messaging

Spring-messaging is a new module added from Spring4.0. Its main responsibility is to integrate some basic message delivery applications for spring framework.

Test

spring-test

The Spring-test module mainly supports testing, after all, it is important for any enterprise to be able to perform integration tests or other tests without having to publish to your application server or connect to other enterprise facilities.

Spring module dependencies

Reference article:

Blog.csdn.net/lj1314ailj/…

Blog.csdn.net/ThinkWon/ar…