Spring handles the infrastructure so you can focus on your application.
Spring framework is an open source Java platform that provides comprehensive infrastructure support for developing robust Java applications very easily and very rapidly.
Spring framework was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003.
Spring is a lightweight framework that enables the developers to create Web applications whose components are loosely coupled
It can be thought of as a framework of frameworks because it provides support to various frameworks such as Struts, Hibernate, Tapestry, EJB, JSF etc.
The Spring Framework was first released in 2004,since then there have been significant major revisions.
Core Container Improvements:
It is no longer necessary to specify the @Autowired annotation if the target bean only defines one constructor.
@PersistenceContext/@PersistenceUnit selects a primary EntityManagerFactory bean if declared as such.
@Scheduled and @Schedules may now be used as meta-annotations to create custom composed annotations with attribute overrides.
SpEL expressions in caches-related annotations can now refer to beans (i.e. @beanName.method()).
Built-in support for HTTP HEAD and HTTP OPTIONS.
New @RestControllerAdvice annotation with combined @ControllerAdvice with @ResponseBody semantics.
WebSocket Messaging Improvements:
@SendTo and @SendToUser can now be specified at class-level to share a common destination.
Support for new library and server generations:
Hibernate ORM 5.2 (still supporting 4.2/4.3 and 5.0/5.1 as well, with 3.6 deprecated now).
Simplicity :Spring framework is simple because as it is non-invasive, POJO and POJI model
Testability :In Spring, for testing spring application server is not mandatory.Spring has it own container to run the applications.
Spring can be used to develop any kind of java application, means we can develop starting from console application to enterprise level application.
Loose Coupling :In spring objects are loosely coupled,this is the core concept of spring framework.
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.
Let's take the example of JdbcTemplate, you don't need to write the code for creating connection, creating statement, committing transaction, closing connection, exception handling etc. You need to focus on business login.Thus, it save a lot of JDBC code.
Abstraction :It provides powerful abstraction to JavaEE specifications such as JMS, JDBC, JPA and JTA.
Spring is a modular framework and has the following features:
Dependency Injection (DI)
Aspect-Oriented Programming (AOP)