7_1.springboot2.x启动配置原理_1.创建SpringApplication对象
2024-09-06 11:41:14
环境准备
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方法。。
最新文章
- linux 学习15 16 启动管理,备份和恢复
- [译]在AngularJS中何时应该使用Directives,Controllers或者Service
- 15、自定义Content Provider
- HDU1710Binary Tree Traversals
- 【转】在XCode工程中创建bundle包
- tyvj1728 普通平衡树
- XUtils骨架HttpUtils采用Get总是返回请求解决问题的相同信息
- javascript 函数和作用域(闭包、作用域)(七)
- BZOJ_1015_[JSOI2008]星球大战_并查集
- DVWA-暴力破解学习笔记
- grep废弃
- Django的View(视图)和路由系统
- 今天圆满了----tensorflow安装日志
- Linux网络编程学习(十二) ----- 结语
- proxysql 系列 ~ 读写分离核心功能
- mysql忘记root密码,修改mysql密码
- Excel中concatenate函数的使用方法
- 【Spark深入学习-11】Spark基本概念和运行模式
- html文件中jquery与velocity变量中的$冲突的解决方法
- 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题
热门文章
- JUC 一 CyclicBarrier 与 Semaphore
- NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)
- NX二次开发-设置经典工具栏的可见性UF_UI_set_toolbar_vis
- 接口(Interfaces)与反射(reflection) 如何利用字符串驱动不同的事件 动态地导入函数、模块
- hexo next主题深度优化(十一),next主题中加入scrollReveal.js,让文章随着鼠标的滚动,出现点小动作。
- ActiveMQ任意文件写入漏洞(CVE-2016-3088)
- 剑指offer——37复杂链表的复制
- 活动:新春第一次送书,价值78元 X 3本
- Centos 7 ping 不通外网
- iOS进阶五-RunLoop