Spring Boot(三):Spring Boot自动加载源码解析

版本:Spring Boot:已经吃了很多关于版本的亏!看之前先看版本信息。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

SpringBoot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。该文件的位置如图:

《Spring Boot(三):Spring Boot自动加载源码解析》

源码分析:

一、从入口开始跟进

《Spring Boot(三):Spring Boot自动加载源码解析》

二、跟进run()方法

《Spring Boot(三):Spring Boot自动加载源码解析》

三、只执行了一个run()方法,继续跟进

《Spring Boot(三):Spring Boot自动加载源码解析》

四、可以看到只创建了一个对象,我们跟进构造函数

《Spring Boot(三):Spring Boot自动加载源码解析》

五、看到他调用的是this方法,其实就是下边的构造方法2

六、在构造中有一个方法三

《Spring Boot(三):Spring Boot自动加载源码解析》

七、跟进getSpringFactoriesInstances()

《Spring Boot(三):Spring Boot自动加载源码解析》

八、欢呼雀跃吧,loadFactoryNames()就是加载文件的方法

loadFactoryNames方法的作用是把/spring.factories文件中的配置类转化为对象,我们可以看到SpringApplication对象实例化时就是在这里加载META-INF/spring.factories文件

九、如果我们想排除一个自动引入的jar可以

《Spring Boot(三):Spring Boot自动加载源码解析》

十、查看Spring Boot自带的自动配置的包: spring-boot-autoconfigure-1.5.6.RELEASE.jar,打开其中的META-INF/spring.factories文件会找到自动配置的映射。

《Spring Boot(三):Spring Boot自动加载源码解析》

再来看看数据源自动配置的实现注解

怎么找到源码文件?按着command+单击username或password,进去九一切了然

《Spring Boot(三):Spring Boot自动加载源码解析》

《Spring Boot(三):Spring Boot自动加载源码解析》

 

 

 

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/w893932747/article/details/86317387
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞