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