The basic concept of Spring is the Inversion of Control pattern (dependency injection).
In Spring, programmers don’t need to create user objects but they need to describe how they should be created (in applicationContext.xml or using annotations).
In Spring, programmers don’t need directly connect components and services together in code but they need to describe which services are needed by which components in a configuration file or using annotations.
The Spring container is responsible for all this.
Spring creates all the objects, connects them together by setting the necessary properties, and determines when methods will be invoked.