11. springboot源码解析

启动springboot就会通过main方法进入springapplication类,他的构造方法的参数是启动类加了@Springbootappliction,在进入的话就是要判断当前的应用类型是无任何web环境、还是有servlet环境,还是有响应式编程环境,然后在读取,spring.factoris中的启动类和监听类,实列化成集合后保存到本站的成员中。然后调用他的run方法,这个run方法是springboot的启动核心方法,他的主要作用就是1.监控springboot的启动耗时时间,然后肯定要读取构造方法的监听他是如何监听的呢,根据类加载器,去classpath加载资源配置文件,获得并且缓存这些类路径,放入一个map集合中,通过指定的类路径,获取配置文件中对应的所有的全路径限定名。根据构造方法判断好的运行环境,要决定如何初始化springapplication容器,这个地方其实只是调用一下,初始化工作还没有开始,既然还未开始那为什么要用调用呢,因为,springapplication容器还要进行准备工作,比如赋值、环境参数等等还要把这个启动类加载到容器的beanfactory中,都需要这个容器,在刷新springapplication容器,在初始化完成,当然刷新这里也是初始化各种组件bean。
在这里插入图片描述

6.3 SpringBoot的自动配置(自动装配)

什么是自动配置?

SpringBoot整合其他的框架或者组件时,自动的提供了一套通用的配置参数,如果开发者没有特殊的要求,可以直接方便的使用整合的框架或者组件。这种方式就是SpringBoot的自动配置。

自动配置的原理

ConfigurationClassPostProcessor 类

BeanDefinitionRegistryPostProcessor类的子类,从BeanFactory中找到启动类,开始处理启动类上的各种注解

启动springboot就会通过main方法进入springapplication类,他的构造方法的参数是启动类加了@Springbootappliction,在进入的话就是要判断当前的应用类型是无任何web环境、还是有servlet环境,还是有响应式编程环境,然后在读取,spring.factoris中的启动类和监听类,实列化成集合后保存到本站的成员中。然后调用他的run方法,这个run方法是springboot的启动核心方法,他的主要作用就是1.监控springboot的启动耗时时间,还准备了一个null的spring容器变量用来做拓展的,然后肯定要读取构造方法的监听并且读取这些监听。

他是如何监听的呢,根据类加载器,去classpath加载资源配置文件,获得并且缓存这些类路径,放入一个map集合中,通过指定的类路径,获取配置文件中对应的所有的全路径限定名。

启动的时候不是有一个springbootlogo,肯定有一个方法是打印logo的,根据构造方法判断好的运行环境,要决定如何初始化springapplication容器,这个地方其实只是调用一下,初始化工作还没有开始,既然还未开始那为什么要用调用呢,因为,springapplication容器还要进行准备工作,比如赋值、环境参数等等还要把这个启动类加载到容器的beanfactory中,都需要这个容器,在刷新springapplication容器,在初始化完成,当然刷新这里也是初始化各种组件bean。

猜你喜欢

转载自blog.csdn.net/qq_44949002/article/details/119956776
今日推荐