.测试项目,随便一个简单的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

最新文章

  1. Eclipse - 常用插件介绍
  2. main函数的详解
  3. Java实现动态代理的两种方式
  4. Smart Tip
  5. jquery实现跨域提交(原创)
  6. 在windows系统中安装hadoop
  7. jquery字体更改后的鼠标-影像学改变//凝视内容
  8. C++ explicit关键字详解(转载)
  9. docker安装+测试环境的搭建---
  10. 使用redis构建文章投票系统
  11. 我的Spring Boot学习记录(一):自动配置的大致调用过程
  12. Spring 完成自动注入(autowire)
  13. Java虚拟机—垃圾收集器(整理版)
  14. 18.QT-QPlainEdit 信号与槽
  15. SpringBoot 配置静态资源映射
  16. emwin之2D图形流位图显示的方法
  17. pycharm python3.5 神奇的导入问题
  18. Python 面向对象详解
  19. Spark2 AccumulatorV2累加器
  20. 20145302张薇 Java第一周学习总结

热门文章

  1. Centos7安装Oracle12c教程
  2. ES6常用总结(一)
  3. android 捕获未try的异常、抓取崩溃日志
  4. Mysql慢查询(配置)
  5. get_started_3dsctf_2016
  6. IDAPython 安装和设置(windows+linux)
  7. python应用 曲线拟合 02
  8. 【NOIP2015模拟】终章-剑之魂
  9. Java I/O流 复制文件速度对比
  10. 《搭建个人Leanote云笔记本》