我们从springboot项目的的启动类中可以看到最核心的两行代码, @SpringBootApplication和SpringApplication.run【rua木】方法。
在 @SpringBootApplication 的内部包含了3个注解
@Configuration
@EnableAutoConfiguration
@ComponentScan
@Configuration是Spring Ioc容器的配置类,可以把它看成xml配置文件中的beans标签。 @Configuration写到类上面,在类中的方法上如果写了 @Bean注解,那么它的返回值将作为一个bean注册到Spring的IoC容器,方法名默认作为bean的id。

@ComponentScan自动扫描并加载符合条件的组件,比如 @Controller和 @Service等,最终将这些bean加载到IoC容器中。
我们可以通过basePackages来指定 @ComponentScan 自动扫描的范围,如果不指定,则默认会扫描 @ComponentScan所在类的 包的 根目录。这也是SpringBoot的启动类最好是放在根目录下的原因。
@EnableAutoConfiguration 这个注解是借助 @Import的帮助,将所有符合 自动配置 条件的bean 加载到IoC容器中。