Springboot自动加载机制源码分析

我们都知道spring boot框架是集合各种框架很好的开发工具,搭建项目环境可以用脚手架傻瓜模式搭建,那么这种机制下面的原理是怎么实现的呢?下面记录下查看源码的过程: Spring boot的三个关键地方:

    pom文件引入依赖包 yml文件进行相关配置 SpringBoot的启动类
    @SpringBootConfiguration:点进去发现里面还有@Configuration,表明这是SpringBoot的配置类,且只能有一个。 @EnableAutoConfiguration:点进去看注释可以发现,根据pom文件里面引入的依赖(jar包)启动相关框架的自动配置,相当于一个自动配置开关。 @ComponentScan:点进去发现这是开启包件扫描的标签,如果在启动类上写了@ComponentScan(baseUrl),那么这里不会生效,如果你没有加,那么这个标签的作用是扫描启动类所在包下的类。很多时候404就是我们启动类的位置放错了。

注解分析完了,下面看下Spring boot是怎么具体操作自动配置:追击SpringApplication.run()方法 类加载器classLoader加载spring-boot-autoconfigure包classpath路径下的FACTORIES_RESOURCE_LOCATION,也就是"META-INF/spring.factories"。打开如下: org.springframework.boot.autoconfigure.EnableAutoConfiguration,EnableAutoConfiguration是我们前面通过注解开启,这里将会启动该配置下的所有配置类。这里我们打开启动Spring的配置类: 主要看下面几个注解:

    @Configuration:配置类 @ConditionalOnWebApplication(type = Type.SERVLET):如果是Web项目(通过引入依赖包判断)就启动该类下所有配置。 @EnableConfigurationProperties({ HttpProperties.class,WebMvcProperties.class }):引入配置文件,你也可以在yaml文件里覆盖这里的默认配置。
经验分享 程序员 微信小程序 职场和发展