第一章 编程语言及计算机介绍(第一章大康王朝)
274
2022-08-14
springboot web - 启动(1) 创建SpringApplication
一. 测试代码
@SpringBootApplication
public class SbmvcApplication {
public static void main(String[] args) {
SpringApplication.run(SbmvcApplication.class, args);
}
}
此处我的springboot 版本是 2.0.3.RELEASE
二. 调试
1. 创建 SpringApplication
deduceWebApplicationType()
从这里看, 程序分为3中运行环境,
NONE : 非 web 的运行环境
SERVLET : 普通 web 的运行环境
REACTIVE : 响应式 web 的运行环境
这里主要看的是 SERVLET 启动.
getSpringFactoriesInstances()
这里主要看一下 SpringFactoriesLoader.loadFactoryNames() 方法
看到这, 能明白, 是在加载 META-INF/spring.factories 文件中的配置.
key 就是传入类的引用, value 是配置的值, 多个值之间用英文逗号隔开, 如:
deduceMainApplicationClass()
这里调用了非java代码, 跟踪不了具体执行过程, 但是从结果看, 拿到的是 SbmvcApplication 类
总结
在创建 SpringApplication 的时候, 干了以下几件事情:
1. 判断了运行环境类型为 SERVLET
2. 加载了 spring.factories 文件中的 ApplicationContextInitializer 配置到 this.initializers 属性中 - 6个初始化器
3. 加载了 spring.factories 文件中的 ApplicationListener 配置 到 this.listeners 属性中 - 10个监听器
4. 拿到入口类SbmvcApplication , 放入 this.mainApplicationClass 属性中.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~