What is Spring Framework?


This is a series and it would make a lot of sense if read in a sequence. You can find all the posts under the heading “Spring Beginners to Professionals“. This is the fifth post of the series. Alright! Let us try and answer the very famous question “What is Spring Framework?”.

What is Spring Framework?

Spring Framework is a beautiful Implementation of Several Design Patterns presented in an abstracted way to an application developer. It is a light weight application development framework written in Java and suitable for Java based applications.

A framework defines an abstraction in which, a software providing generic functionality can be changed selectively by additional user written code.

Spring provides comprehensive infrastructure support for application development and it handles the infrastructure pieces in a platform independent way so that the application developer can focus mostly on the business logic of the application.

Spring provides an abstraction layer which is commonly termed as the boiler plate, which makes the applications, independent of vendor technologies. It can help you execute transactions, make RPC calls, execute JMX, communicate using available JMS solutions, create full featured MVC applications, integrate with persistence frameworks, provide Web Services abstraction and perform many more application logic without really implementing any of the pieces specific to these APIs.

If you are using Spring then the business logic is fairly isolated from the logic to connect to a specific database, or messaging queue, remote procedures etc. unlike the traditional java applications.

After seeing so many components in the architecture diagram you might ask,

How is Spring Light Weight?

Spring is considered light weight because it is fairly modular and non-intrusive, which means most of the modules can be independently plugged in to any application. It uses simple POJOs for virtually everything unlike J2EE which has container managed beans.

For e.g. If we want to develop an application with web, business and persistence layer, we may choose to use Spring only at persistence layer and use a different web layer like JSF, Struts, Tapestry etc.  This means, Spring allows us to use only those parts which we need without bringing in the rest.


This post focused on answering couple of very important questions in the Spring interviews. I believe learning by coding and in the next post, we will setup the development environment for easy development.