SpringBoot流程图
2022-01-16 22:03:41 0 举报
SpringBoot流程图
作者其他创作
大纲/内容
Listener
判断应用程序当前类型NONESERVLETREACTIVE
开始run方法
listeners.contextPrepared(context);
new SpringApplication()
3:listeners.environmentPrepared(environment);
15
4
获取文件中对应类的全路径
初始化
8
11
3
配置系统属性java.awt.headless意义不大,可以忽略
此处在看到创建上下文的对象之后一定·要看类关系图,在父子关系的类中完成了很多初始化操作,容易忽略AnnotationConfigServletWebServerApplicationContextGenericApplicationContext,DefaultListableBeanFactory();
listeners.running(context);
加载所有的监听器
2:读取banner.txt文件中的内容
5
刷新上下文环境(关键操作)重点在spring中refreshContext(context);
运行所有的监听器对象,进行最后的启动执行listeners.started(context);
2
注册ListennerSpringApplicationRunListeners listeners = getRunListeners(args);获取EventPublishingRunListener,贯穿全局,每次获取监听器的操作,都会从中获取具体的监听器。事件发生器
9
14
10
匹配不同类型的时间,从所有的监听器中过滤掉不符合的监听器,符合条件的监听器会循环执行的处理逻辑
计时结束,打印启动程序的时长stopWatch.stop();
加载命令行的参数值解析命令行中通过 --key=value传入的属性值,封装到ApplicationArgument()中new SimpleCommandLineArgsParser().parse(args)
getSpringFactoriesInstance
13
6
3:循环打印输出默认的banner
Staring
反射得到对应的实体对象,返回给调用者
读取记载spring.factories文件中的内容
1
listeners.contextLoaded(context);
SpringApplication启动
每次监听器在实际操做的时候都会执行listener.*()starting();running();.........
找到程序的主类
7
设置初始化执行,向beanfactory中注入三个postProcessor对象后续在自动装配的时候会用到applyInitializers(context);
开始计时器StopWatch stopWatch = new StopWatch();设置当前任务的时间和ID,方便后续的时候进行计时操作
准备banner打印
加载所有的初始化容器spring.factories
设置系统属性,保证某些bean不会添加到准备的环境中spring.beaninfo.ignore
2:对当前环境进行配置configureEnvironment()
12
收藏
0 条评论
下一页