环境准备

springboot2.1.9、idea2019、

pom.xml

解析

几个重要的事件回调机制

配置在META-INF/spring.factories

ApplicationContextInitializer

SpringApplicationRunListener

只需要放在ioc容器中

ApplicationRunner

CommandLineRunner

在主配置类打断点进行调试

可见springboot应用程序分为两步:1、创建SpringApplication对象;2、运行run方法

创建SpringApplication对象

	public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
this.resourceLoader = resourceLoader;
//判断主配置类不能为空
Assert.notNull(primarySources, "PrimarySources must not be null");
//保存主配置类
this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
//判断当前是否一个web应用
this.webApplicationType = WebApplicationType.deduceFromClasspath();
//从类路径下找到META‐INF/spring.factories配置的所有ApplicationContextInitializer;然后保存
setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
//从类路径下找到ETA‐INF/spring.factories配置的所有ApplicationListener
setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
//从多个配置类中找到有main方法的主配置类
this.mainApplicationClass = deduceMainApplicationClass();
}
setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));

setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

查看已创建的SpringApplication对象:

之后运行run方法。。

最新文章

  1. linux 学习15 16 启动管理,备份和恢复
  2. [译]在AngularJS中何时应该使用Directives,Controllers或者Service
  3. 15、自定义Content Provider
  4. HDU1710Binary Tree Traversals
  5. 【转】在XCode工程中创建bundle包
  6. tyvj1728 普通平衡树
  7. XUtils骨架HttpUtils采用Get总是返回请求解决问题的相同信息
  8. javascript 函数和作用域(闭包、作用域)(七)
  9. BZOJ_1015_[JSOI2008]星球大战_并查集
  10. DVWA-暴力破解学习笔记
  11. grep废弃
  12. Django的View(视图)和路由系统
  13. 今天圆满了----tensorflow安装日志
  14. Linux网络编程学习(十二) ----- 结语
  15. proxysql 系列 ~ 读写分离核心功能
  16. mysql忘记root密码,修改mysql密码
  17. Excel中concatenate函数的使用方法
  18. 【Spark深入学习-11】Spark基本概念和运行模式
  19. html文件中jquery与velocity变量中的$冲突的解决方法
  20. 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题

热门文章

  1. JUC 一 CyclicBarrier 与 Semaphore
  2. NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)
  3. NX二次开发-设置经典工具栏的可见性UF_UI_set_toolbar_vis
  4. 接口(Interfaces)与反射(reflection) 如何利用字符串驱动不同的事件 动态地导入函数、模块
  5. hexo next主题深度优化(十一),next主题中加入scrollReveal.js,让文章随着鼠标的滚动,出现点小动作。
  6. ActiveMQ任意文件写入漏洞(CVE-2016-3088)
  7. 剑指offer——37复杂链表的复制
  8. 活动:新春第一次送书,价值78元 X 3本
  9. Centos 7 ping 不通外网
  10. iOS进阶五-RunLoop