Spring is the most popular application development framework for enterprise Java. Millions of developers around the world use Spring Framework to create high performing, easily testable, and reusable code. The problem with the EJB framework was that it was heavy and development using EJBs was not easy. Developers needed to create home and remote interfaces and write a lot of boilerplate code. Unit testing is also not easy with EJBs.
The Spring Framework was developed as a solution to these problems.
At its very core, Spring provides a wiring mechanism. It consists of the Spring container which uses Inversion of Control mechanism. Inversion of Control simply means the container is responsible for creating objects and not the application program. One of the ways to achieve Inversion of Control is Dependency Injection. Spring uses Dependency Injection. In Dependency Injection, the objects are injected into other objects through setter methods or constructors. So basically, Spring takes care of creating and setting the necessary dependencies. So the application code only needs to take care of the business logic.
There are many advantages of Spring Framework and we will mention some of them:
1) Predefined Templates
Spring framework provides templates for JDBC, Hibernate, JPA etc. technologies. So there is no need to write too much code. It hides the basic steps of these technologies.
2) Lightweight
The Spring Framework doesn’t force the programmer to inherit any class or implement any interface.
3) Declarative support
It provides declarative support for caching, validation, transactions and formatting. Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an application’s needs.