There are a lot of frameworks available in the market to develop enterprise applications. Each framework is having its own specific features to develop enterprise applications. For example, developers can use struts framework to implement Model-View- Controller (MVC) Architecture instead of manually separating servlet and jsp’s.

A typical enterprise application may use the following set of frameworks and services.

1. Hibernate framework for database access mechanism.
2. Struts framework for developing front-end layer.
3. Enterprise java beans (EJB) for services like transactions, security and messaging.

If the business requirement increases, the list of frameworks and services that an enterprise application uses also will grow. If an application using different frameworks and services become difficult to maintain the code. And it becomes difficult to test the application

We need a solution where we can develop application that can use any number of frameworks and services but still code remain maintainable and the code that we write should not be tight coupled.

Spring framework provided a light-weight solution to develop maintainable and reusable enterprise applications.
Spring is a modular framework i.e. spring framework can be used for all layer (spring –JBC, Spring MVC, Spring ORM etc.) implementations for developing enterprise applications.
Spring provides a facility to integrate various frameworks and technologies, and services in the application.

The main reason for using spring framework is to keep the code as simple as possible. Spring framework uses the POJO (Plain Old Java Objects) to develop enterprise applications. For this reason, spring framework can also be called as Plain Old Java Object (POJO) framework.

Spring is a open-source framework ( developed by Spring Source a division of VMware.

We can call spring framework in the following 2 ways.

Container: spring framework can be described as light-wight container, as it does not require installation, configuration, start, and stop activities. It is just a simple collection of few Java Archive (JAR) files that need to be added to the classpath.

Framework: Spring framework can be described as an Application Programming Interfaces(API) .It contains a large number of classes, methods, interfaces, annotations, Extensible Markup Language(XML) tags that can be used in the application.