springBoot
2022-10-02 17:32:38 0 举报
springboot源码
作者其他创作
大纲/内容
设置上下文环境
SpringApplicationRunListender提供了run各个阶段的监听处理功能
multicastEvent或pulishEvent发布事件
getDescription
stopWatch.stop();
通知监听器,容器启动完成listeners.started(context);
refreshsrping刷新容器
DispatcherServlet初始化
获取ApplicationContextInitializer对应的类,createSpringFactoriesInstances反射实例化,排序
new SpringApplication(primarySources).run(args)
创建容器createApplicationContext
printBanner打印Banner
deduceMainApplicationClass获取main函数的类
getWebServerFactory
初始化springbootApplication
将启动类 放入primarySources(LinkedhashSet)new LinkedHashSet<>(Arrays.asList(primarySources))
getSpringFactoriesInstances读取spring.factories,放入cache,13个key(ApplicationContextInitializer)
this.webApplicationType = WebApplicationType.deduceFromClasspath();WEB应用类型推断
启动类 main方法
加载属性配置,application.propertiesprepareEnvironment
获取servlet上下文getServletContext
创建StopWatch计时器对象,开始计时stopWatch.start()
getSelfInitializer().onStartup(servletContext);
run
listeners.starting();
ApplicationContextInitializer初始化
根据不同的枚举类型创建不同的上下文容器
getTomcatWebServertomcat初始化启动
ConfigurableListableBeanFactory
获取spring.factories中的ApplicationListenersetListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
通知监听器,容器正在运行listeners.running(context);
应用上下文后置处理postProcessApplicationContext
初始化容器refreshContext(context);
创建servlet容器onRefresh
createWebServer
callRunners
configureHeadlessProperty配置headless属性,并设置到系统属性中
内嵌tomcat
调用SpringApplicationRunListeners构造方法,第二个参数是SpringApplicationRunListener集合
通过ApplicationRunner和CommandLineRunner的callRunners实现
初始化监听器getRunListeners
通知监听器context加载完成listeners.contextLoaded(context);
通知监听器context准备完成listeners.contextPrepared(context);
得到内嵌tomcat
1. 当DispatcherHandler存在,并且DispatcherServlet和ServletContainer不存在时,WebApplicationType.Reactive2.当Servlet和ConfigurableWebApplicationContext任何一个不存在,说明不是web应用,WebApplicationType.None3.前两种都不成立 WebApplicationType.Servlet
getWebServer
收藏
收藏
0 条评论
下一页