¿Por qué la clase de aplicación Spring Boot necesita tener una anotación @Configuration?

Estoy aprendiendo sobre Spring Framework pero no puedo entender qué es exactamente@Configuration la anotación significa y qué clases deben anotarse así. En los documentos de Spring Boot se dice que la clase de aplicación debería ser@Configuration clase.

Spring Boot favorece la configuración basada en Java. Aunque es posible llamar a SpringApplication.run () con una fuente XML, generalmente recomendamos que su fuente principal sea una clase @Configuration.

Tratando de aprender sobre@Configuration Me parece que anotar una clase con el@Configuration indica que el contenedor Spring IoC puede usar la clase como fuente de definiciones de bean.

Si es así, ¿cómo es esta clase de aplicación una fuente de definiciones de bean?

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class App 
{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);    
    }
}

He entendido casi todos los otros conceptos básicos sobre Spring, pero no puedo entender el propósito de@Configuration o qué clases deberían ser@Configuration clases? Puede ayudarme alguien, por favor. Gracias !!

Respuestas a la pregunta(2)

Su respuesta a la pregunta