自动配置其实就是将默认的配置自动加载进去,不需要我们去手动进行配置,依然是对源码进行分析
从SpringBootApplication引导类开始:@SpringBootApplication注解源码解析
(1)@SpringBootConfiguration
@SpringBootConfiguration注解上面有一个@Configuration 注解,既标注该类是 Spring 的一个配置类 ,其实,@SpringBootConfiguration 注解就相当于Configuration注解,用于标注该类是 Spring 的一个配置类,和 Spring 中的@Configuration 注解是一个意思
(2)@ComponentScan
@ComponentScan注解是用于组件扫描,默认扫描当前引导类所在的包下的索引
(3)@EnableAutoConfiguration
@EnableAutoConfiguration注解是 SpringBoot 自动配置功能开启
|
@Import({AutoConfigurationImportSelector.class})注解配置,这是导入了AutoConfigurationImportSelector类,意思是自动配置导入选择器
|
AutoConfigurationImportSelector类中SpringFactoriesLoader.loadFactoryNames 方法的作用就是从META-INF/spring.factories文件中读取指定类对应的类名称列表
|
spring.factories文件存在大量的以 Configuration 为结尾的类名称,这些类就是存有自动配置信息的类,而 SpringApplication 在获取这些类名后再加载
|
ServletWebServerFactoryAutoConfiguration为例
|
@EnableConfigurationProperties(ServerProperties.class)代表加载 ServerProperties 服务器配置属性类
|
@ConfigurationProperties(prefix = "server")表示SpringBoot配置文件中的前缀,SpringBoot会将配置文件中以server开始的属性映射到该类的字段中
|
spring-configuration-metadata.json
|
{
"name": "server.port",
"type": "java.lang.Integer",
"description": "Server HTTP port.",
"defaultValue": 8080
}
领取专属 10元无门槛券
私享最新 技术干货