本文已参与「新人创作礼」活动,一起开启掘金创作之路。
先看看 Spring Boot 的主配置类:
里面有一个main方法执行了一个 run() 方法,在 run() 方法中必须传入一个被 @SpringBootApplication 注解的类
- @SpringBootApplication
Spring 应用标注在某个类上说明这个了类是 SpringBoot 的主配置类,SpringBoot 就会运行这个类的 main 方法来启动项目。
@SpringBootApplication注解是一个组合注解,它是由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解组合而成的
- @SpringBootConfiguration
这个注解表明,该类是一个Spring的配置类,而@Configuration则表明Spring配置类也是Spring的一个组件
- @EnableAutoConfiguration
@EnableAutoConfiguration这个注解是用来开启自动配置的功能
@AutoConfigurationPackage这个注解是用来自动配置包,主要是使用@Import来给Spring容器导入一个组件,这里导入的是Registrar.class。就是通过这个方法获取到扫描的包路径
而metadata就是标注了@SpringBootApplication注解的ActuatorApplication,也就是主配置类
说白了就是将主配置类所在的包以及子包里面所有组件扫描加载到Spring容器
@Import(AutoConfigurationImportSelector.class)
这个注解主要是给Spring容器导入一些组件,这里是AutoConfigurationImportSelector,里面的selectImports方法会将所有需要导入的组件以全限定名的方式返回
而所需要的配置则是从spring.factories中获取