The @SpringBootApplication contains three useful annotations, including
@SpringBootConfiguration: Look at the source code is actually @configuration, indicating that the current class is a configuration class, like an XML configuration file, and now is a Java configuration file, the effect is the same, generally with @bean.
@EnableAutoConfiguration: Enable automatic configuration of the Spring application context to try to guess and configure the beans you might need. The package that is the @EnableAutoConfiguration annotated class contains a specific meaning and is used as the default configuration. It is usually recommended to configure the @EnableAutoConfiguration under the root package so that all the child packages and classes can be found.
@ComponentScan: Automatic scanning with annotation configuration, the default is to scan the current package and all child packages, and the XML configuration automatically scans the same effect. There's a @filter. You can specify to exclude certain classes.
@SpringBootApplication annotation Comprehension