SpringBoot专题架构

SpringBoot自动配置-原理初探

2021-07-05  本文已影响0人  大程子的技术成长路

pom.xml

启动器:

主程序:

// @SpringBootApplication:标注这个类是一个Springboot的应用:启动类下的所有资源被导入
@SpringBootApplication
public class HelloworldApplication {

    //SpringApplication
    public static void main(String[] args) {
        // 将springboot应用启动
        SpringApplication.run(HelloworldApplication.class, args);
    }

}

获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
    List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
    Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
    return configurations;
}

META-INF/spring.factories : 自动配置的核心文件

image-20201015205538212.png image-20201015210328167.png
Properties properties = PropertiesLoaderUtils.loadProperties(resource);  // 所有的资源加载到配置类中
自动配置原理分析.png

结论:springboot所有的自动配置都是在启动的时候扫描并加载:spring.factories 所有的自动配置类都在这里面。但是不一定生效,要判断条件是否成立,只要在pom.xml中导入了对应的start,就有了对应的启动器了。有了启动器,我们自动装配就会生效,然后就配置成功了!

上一篇 下一篇

猜你喜欢

热点阅读