springboot的启动流程源码分析
2024-10-07 15:17:01
.测试项目,随便一个简单的springboot项目即可:
直接debug调试:
可见,分2步,第一步是创建SpringApplication对象,第二步是调用run方法:
1.SpringApplication对象的创建过程:
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { //resourceLoader为null,因为我们没有传入,primarySources这里包含主启动类的ThymeleafApplication.class
this.resourceLoader = resourceLoader; //资源加载器,这里是null
Assert.notNull(primarySources, "PrimarySources must not be null");
this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources)); //将主启动类字节码存起来
this.webApplicationType = WebApplicationType.deduceFromClasspath(); //检测当前的项目web类型,后续会分析
setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));//这里涉及springboot的一个重要知识点,后续分析
setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));//这里涉及springboot的一个重要知识点,后续分析
this.mainApplicationClass = deduceMainApplicationClass();//这里检测main方法所在的类
}
通过SpringApplication的创建过程,我们分析下,它的主要几个方法:
this.webApplicationType = WebApplicationType.deduceFromClasspath();
因为我引入的是springboot-web相关依赖,所以,在本次测试项目中,webApplication的类型是AnnotationConfigServletWebServerApplicationContext
最新文章
- Eclipse - 常用插件介绍
- main函数的详解
- Java实现动态代理的两种方式
- Smart Tip
- jquery实现跨域提交(原创)
- 在windows系统中安装hadoop
- jquery字体更改后的鼠标-影像学改变//凝视内容
- C++ explicit关键字详解(转载)
- docker安装+测试环境的搭建---
- 使用redis构建文章投票系统
- 我的Spring Boot学习记录(一):自动配置的大致调用过程
- Spring 完成自动注入(autowire)
- Java虚拟机—垃圾收集器(整理版)
- 18.QT-QPlainEdit 信号与槽
- SpringBoot 配置静态资源映射
- emwin之2D图形流位图显示的方法
- pycharm python3.5 神奇的导入问题
- Python 面向对象详解
- Spark2 AccumulatorV2累加器
- 20145302张薇 Java第一周学习总结