springboot2.2.2启动过程流程
2022-01-26 18:07:32 0 举报
springboot2.2.2 启动过程
作者其他创作
大纲/内容
new SpringApplication()
执行starting方法
第七步
对当前环境进行配置configureEnvironment
记载spring.factoris文件中的你内容
listeners.running(context);
判断当前应用程序的类型NONESERVLETREACTIVE
第十一步
第二步
根据传入的类名(key),得到需要的工厂集合的实例
设置初始化进行执行,向beanfactory中注入了三个postprocessor的对象,后续在自动装配的时候会用到applyInitializers(context);
第三步
根据反射得到具体的实体类对象
获取文件中对应类的全路径
找到程序运行的主类
此处在看到创建上下文的额对象之后一定要看类图,在父子关系的类中完成了很多初始化的操作,容易忽略GenericApplicationContextDefaultListableBeanFactory
第十步
符合条件的监听器会循环执行具体的自己的处理逻辑
初始化
循环打印输出默认的banner
计时结束,并打印启动程序运行的时长stopWatch.stop();
注册listenersSpringApplicationRunListeners listeners = getRunListeners(args);
第五步
准备banner的打印Banner printedBanner = printBanner(environment);
获取或者创建一个环境,根据当前应用程序的类型来做判断的getOrCreateEnvironment()
匹配不同类型的时间,然后从所有的监听器中把不符合条件的监听给过滤掉
第九步
getSpringFactoriesInstances
准备上下文应用对象,根据当前应用程序的类型来判断创建什么格式的上下文对象context = createApplicationContext();
第十二步
第六步
第八步
设置系统属性,保证某些bean不会添加到准备的环境中spring.beaninfo.ignore
第四步
第十三步
生成对应的对象之后再返回给调用者
listeners.environmentPrepared(environment);
加载所有的监听器
配置系统属性java.awt.headless意义不大,可以忽略
第一步
刷新上下文环境(关键操作)重点在spring的时候会讲到refreshContext(context);
开启计时器StopWatch stopWatch = new StopWatch();设置当前任务的id和启动的时间,方便后续的时候进行计时的操作
加载命令行的参数值,解析在命令行中通过--key=value输入的属性值,封装到ApplicationArguments对象中new SimpleCommandLineArgsParser().parse(args)
开始执行run方法
获取一个EventPublishingRunListeners的对象,此对象会贯穿整个应用程序启动的过程,每次在进行监听器操作的时候都会从中获取具体的监听器
SpringApplication启动
每次监听器在实际做操作的时候都会执行listeners.*()
加载所有的初始化容器
this.initialMulticaster.multicastEvent
第十五步
listeners.contextLoaded(context);
第十四步
starting()
读取banner.txt文件中的内容
listeners.contextPrepared(context);
开始所有的监听器对象listeners.started(context);
0 条评论
下一页