springboot 加载过程
2022-04-05 22:02:05 0 举报
springboot 加载过程
作者其他创作
大纲/内容
# Error Reportersorg.springframework.boot.SpringBootExceptionReporter=\\org.springframework.boot.diagnostics.FailureAnalyzers
4、刷新应用上下文前的准备阶段
listeners.contextPrepared(context);
加载我们的启动类,将启动类注入容器
将配置绑定到application对象中bindToSpringApplication(environment);
run()
根据用户配置,配置 environment系统环境
org.springframework.boot.context.event.EventPublishingRunListener
创建工厂实例
3、初始化应用上下文
listeners.starting();
创建并配置相应的环境
refreshContext(context);
通过指定的classLoader从 META-INF/spring.factories 的资源文件中
组装Application
2、构造应用上下文环境
1.获取并启动监听器
实例化SpringBootExceptionReporter.class,用来支持报告关于启动的错误
如果应用类型是 SERVLET 则实例化 StandardServletEnvironment
将main函数中的args参数封装成单例Bean,注册进容器
org.springframework.context.ApplicationListener
向各个监听器发送容器已经准备好的事件
5、刷新应用上下文
根据调用栈,推断出 main 方法的类名
将 printedBanner 也封装成单例,注册进容器
创建applicationContext对象createApplicationContext()
6、刷新应用上下文后的扩展接口
发布容器已加载事件
,后面会根据类型初始化对应的环境。常用的一般都是servlet环境 WebApplicationType.deduceFromClasspath()
org.springframework.boot.SpringApplicationRunListener
// 启动相应的监听器,其中一个重要的监听器 ConfigFileApplicationListener 就是加载项目配置文件的监听器。listeners.environmentPrepared(environment);
listeners.contextLoaded(context);
context.setEnvironment(environment);
执行容器后置处理
// SpringApplicationRunListeners负责在SpringBoot启动的不同阶段,// 广播出不同的消息, 传递给ApplicationListener监听器实现类。
发布容器启动完成事件
推断应用类型
设置容器环境
初始化classpath下所有已配置的 ApplicationListener
beanFactory.registerSingleton(\"springBootBanner\
// Add boot specific singleton beansConfigurableListableBeanFactory beanFactory = context.getBeanFactory();//将main函数中的args参数封装成单例Bean,注册进容器beanFactory.registerSingleton(\"springApplicationArguments\
postProcessApplicationContext(context);applyInitializers(context);
收藏
收藏
0 条评论
下一页