@SpringBootApplication 详解
SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。
查看@SpringBootApplication源码
前四个注解:是元注解,用来修饰当前注解,就像public类的修饰词,没有实际功能。
1、@SpringBootConfiguration:SpringBoot的配置类
标记在某个类上,表示这是一个SpringBoot的配置类。 @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到容器中,并且实例名就是方法名。
2、@EnableAutoConfiguration:开启自动配置功能,有了自动配置类,省去了我们手动编写配置注入功能组件等的工作。
以前我们需要配置的东西,SpringBoot会帮我们自动配置。@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效。
查看@EnableAutoConfiguration源码
@AutoConfigurationPackage:将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到容器中。
@Import(AutoConfigurationImportSelector.class):Spring的底层注解,给容器导入组件。
AutoConfigurationImportSelector:导入哪些组件的选择器。
借助AutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的配置以全类名的方式加载到当前SpringBoot创建并使用的容器。
SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类加载到容器中,自动配置就生效,帮助我们自动配置工作。
J2EE的整体整合解决方案和自动配置都在这个包下。
3、@ComponentScan:自动扫描组件,即告诉spring该去哪里扫描bean。
在类上使用注解,如@Controller、@Component、@Configuration等这些注解,@ComponentScan会扫描带有这些注解的类并装入容器中。