What is Spring?
Application Infrastructure that follows Dependency Injection Pattern to wire dependencies together. It offers a Spring Context Container that will handle these Spring beans vs allowing components from managing the lifecycle of their dependent components.
What is @Configuration?
Configuration class that will provide beans to the Spring App
XML Configuration Files vs Java Configuration file?
Greater type safety and improved refactorability with Java.
What is Spring Autoconfiguration?
Spring makes reasonable guesses at what components need to be configured and wired together, based on entries in the class path, environment variable, and other factors