The Spring Framework is an open source Java application framework originally developed based on the principles of dependency injection (DI) and inversion of control (IoC).
The Spring Framework has grown over years from just being an Inversion of control container, and currently includes several modules that provide range of services like Aspect-oriented programming, Data access, Transaction management, Model–view–controller, Authentication and authorization, Messaging, and Testing. You can have a look at all of these Spring projects @ spring.io/projects. The core module is the Spring Framework and most other modules are dependent on this module.
Spring provides autowiring capabilities through which you can simply specify the interface type and Spring can find an actual type at runtime, provided there are no conflicts.
Spring has become a popular alternative to the Enterprise JavaBean (EJB) model.
A container creates and manages your components, and even provides some services to components managed in its environment, such as transaction management, persistence and security etc.
Examples of containers from Java EE are Servlet container (or web container) that manages Servlets, JSPs, Filters etc. and EJB container that manages EJB components like session beans, message driven beans and entity beans.
Spring framework is a also container, as application components can be created and managed, and can be wired together. The spring framework even provides middleware services such as transaction management, dependency injection, persistence, aspect oriented programming and security.
Spring framework is considered a lightweight container compared to EJBs, as it manages the components and provides services without requiring application code to depend on its own API, and also doesn’t need to be deployed into a full-featured application server, as in the case of EJBs.
The first version of the Spring framework was written by Rod Johnson along with a book in 2002.
The framework was first released in June 2003 under the Apache license version 2.0.
The first milestone release of Spring framework (1.0) was released in March 2004.
Spring 2.0, which came in 2006, simplified the XML config files.
Spring 2.5, which came in 2007, introduced annotation configurations.
Spring 3.2, which came in 2012, introduced Java configuration, had support for Java 7, Hibernate 4, Servlet 3.0, and also required a minimum of Java 1.5.
Spring 4.0, which came in 2014, had support for Java 8.
Spring Boot also was introduced in 2014.
Spring 5.0 came out in 2017. Spring Boot 2.x has support for Spring 5.
Spring documentatipn is more of a tutorial than a guide and should be your primary reference material. Spring documentation can be accessed from spring.io/docs.