I am learning about the Spring Framework but I can\'t understand what exactly the @Configuration annotation means and which classes should be annotated so. In t
You understood it right.
@Configuration is an analog for xml file. Such classes are sources of bean definitions by defining methods with the @Bean annotation.
@Configuration is:
sources parameter when calling the SpringApplication.run() method;@ComponentScan annotation of your main configuration class.For readability, classes that are even explicitly passed as sources may anyway be annotated with @Configuration - just to show the intentions more clearly.
Your current class is not really source of bean definitions, because it doesn't have any, but if you had @Bean annotated methods, Spring would see them.
Can be used with or without @Configuration. It tells Spring to setup some basic infrastructure judging by what you have in the classpath. It's done by invoking a so called import class that's derived from the value of the @Import annotation that @EnableAutoConfiguration includes. Only one class should be annotated with @EnableAutoConfiguration, duplicating it doesn't do anything.
This answer may also be helpful to understand the Spring Boot initialization process: Which piece of code in Spring Boot actually registers dispatcher servlet for SpringMVC?