What is Spring
Spring is an open source framework, it was created to address the complexity of enterprise application development
Using the plain-vanilla JavaBeans, Spring makes it possible to achieve things that were only possible with EJBs.
What it has
Lightweight - Its a lightweight in terms of both and size and overhead. Spring is nonintrusive : objects in a Spring-enabled application typically have no dependencies on Spring specific classes.
Modules in Spring:
Core Container - Spring is a container meaning it contains and manages the life cycle and configurations of application objects. In this module, you will find Spring's Bean Factory. A Bean Factory is implementation of factory pattern that applies IoC to separate your application's configuration and dependency specificatons from actual application code.
Inversion of Control - Promotes loose coupling through inversion of control (IoC), Objects are passively given their dependencies instead of creating or looking for dependencies objects for themselves. You can think of IoC as JNDI in reverse instead of an object looking up dependencies from the container, the container gives the dependencies to the object at instantiation without waiting to be asked.
Spring's AOP module - Spring comes with rich support for aspect oriented progamming, it is often defined as a programming technique that promotes separation of concerns within a software system. System services such as transactions management, logging and security are commonly referred to as cross-cutting concerns.
Application context module - Bean Factory is what makes Spring a container, added to that the context module is what makes it a framework adding support to Internationalization (I18N) messages, life cycle events and validation.
JDBC and DAO module - This abstracts the jdbc code and keeps your database code clean and simple.
OR Mapping module - Provides hooks into several popular ORM frameworks, including Hibernate, iBATIS, JDO.
MVC Framework - Spring comes with a full featured Model/View/Controller (MVC) framework for building web applications. It can easily be integrated with other MVC frameworks such as Struts, Spring used IoC to provide clean separation of controller logic from business objects.
Web Module - This is build on the applciation context module providing context for web-based applications. It handles the programmatic binding of request parameters to business objects.