springboot2.3.2启动过程流程
2021-08-08 15:53:51 0 举报
springboot2.3.2启动过程流程
作者其他创作
大纲/内容
加载spring.factory文件中的内容
根据传入的类名(key)得到需要的工厂集合的实例
生成对象的对象之后再返回给调用者
AnnotationConfigServletWebServerApplicationContext在父类GenericApplicationtContext中初始化了DefaultListableBeanFactory
step5
根据反射得到具体的实体类对象
listeners.contextLoaded(context)
step4
listeners.environmentPrepared(environment)
关联
找到程序运行的主类(堆栈的方式)
new SpringApplication()
加载命令行的参数值ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);
注册listenersSpringApplicationRunListeners listeners = getRunListeners(args)
关联 根据类型判断
加载所有的监听器
每次监听器在实际操作的时候都会执行listeners.*()
获取banner.txt文件中的内容
获取文件中对应类的全路径
starting()
getSpringFactoryInstances
获取或者创建一个环境,根据当前应用程序的类型来判断的ConfigurableEnvironment environment = getOrCreateEnvironment()
配置系统属性java.awt.headles 意义不大可以忽略
计时结束 并打印启动程序运行的时间stopWatch.stop(); // 关闭时间
step9
step1
符合条件的监听器会循环执行具体的自己要处理的逻辑
准备banner的打印工作Banner printedBanner = printBanner(environment)
listeners.contextPrepared(context)
匹配不同类型的事件 从所有的监听器中把所有不符合条件的监听器过滤掉
step17
step14
先判断是否有图片 仅支持 jpg gif png 格式的图片
step11
step2
判断当前应用程序的类型NONE SERVLETREACRIVE
解析在命令行中的通过 --key=value输入的属性值, 封装到ApplicationArguments对象中new SimpleCommandLineArgsParser().parse(args) 在这个函数中解析的
运行所有的监听器对象listeners.started(context); //监听事件监听 另外一个监听事件
SpringApplication启动
nitialMulticaster.multicastEvent()
初始化
step6
向beanfacotry中注入了3个postprocessor的对象 后续在自动装配的时候会用到。
循环打印输出默认的banner
执行starting操作
step3
step13
获取一个EventPublishingRunListeners的对象,此对象会贯穿整个应用程序启动的过程, 每次在进行监听器操做的时候都会从中获取具体的监听器
step7
step10
step8
加载所有的初始化容器
开启计时器StopWatch stopWatch = new StopWatch();
step12
设置系统属性, 保证某些bean不会添加到准备的环境中configureIgnoreBeanInfo(environment) 这些环境spring.beaninfo.ignore
设置初始化进行执行applyInitializers(context);// 应用初始化器
step16
刷新上下文环境(关键操作)请移动到spring的全体总结流程中refreshContext(context)
准备上下文应用对象,根据当前应用程序的类型来判断创建什么格式的上下文对象context = createApplicationContext()
step15
开始执行run方法
关联起来
listeners.running(context) 啥也没干
此处在看创建上下文对象之后 一定要看类图,在父子关系的类中完成啦很多初始化的操作,容易忽略
设置当前任务的id和启动时间,方便后续的时候进行计时的操作
0 条评论
下一页