Framework overview
The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an alternative to, replacement for, or even addition to the Enterprise JavaBean (EJB) model.
Modules
This is a brief description of the most used Spring framework modules:
Spring Core Container
The spring-core and spring-beans modules provide the fundamental parts of the framework, including the IoC and Dependency Injection features. (BeanFactory and ApplicationContext).
Aspect-oriented programming
Provides an AOP (Alliance-compliant aspect-oriented programming) implementation allowing you to define, for example, method interceptors and pointcuts to cleanly decouple code that implements functionality that should be separated.
Authentication and authorization
Configurable security processes that support a range of standards, protocols, tools and practices via the Spring Security sub-project (formerly Acegi Security System for Spring).
Convention over configuration
A rapid application development solution for Spring-based enterprise applications is offered in the Spring Roo module.
Data access
Working with relational database management systems on the Java platform using JDBC and object-relational mapping tools and with NoSQL databases.
Inversion of control container
Configuration of application components and lifecycle management of Java objects, done mainly via dependency injection.
Messaging
Configurable registration of message listener objects for transparent message-consumption from message queues via JMS, improvement of message sending over standard JMS APIs.
Model–view–controller
An HTTP and servlet-based framework providing hooks for extension and customization for web applications and RESTful Web services.
Remote access framework
Configurable RPC-style marshalling of Java objects over networks supporting RMI, CORBA and HTTP-based protocols including Web services (SOAP).
Transaction management
Unifies several transaction management APIs and coordinates transactions for Java objects.
Remote management
Configurable exposure and management of Java objects for local or remote configuration via JMX.
Testing
Support classes for writing unit tests and integration tests.