一、springboot的main函数
一般我们会这么写springboot的启动类
这个类需要注意的是有两点,一个是@SpringBootApplication注解,还有就是run方法。
1、@SpringBootApplication注解
点进注解进入后,看到的情况如下
1.1@ComponentScan
是熟悉的包扫描,因为默认是没有配置的,所以spring框架实现会从当前类的包下进行扫码
1.2 @EnableAutoConfiguration
借助@Import的支持,收集和注册特定场景的相关bean
1.3 @SpringBootConfiguration
标注当前是配置类,并且注入到spring容器中去
二、接着run()方法
1、创建实例
如下

2、run()具体逻辑
2.1
如下图所示
首先解析classpath中是否存在特定类型,来决定是否应该创建相关类型。
从classpath获取相关参数

从SpringFactories获取所有的ApplicationContextInitializer实例
从SpringFactories获取所有的ApplicationListener实例
推断并设置main方法的定义类
2.2 获取
2.2.1 获取runListerners,并且开始监听事件
2.2.2 准备启动环境
2.2.3 使用打印printer


:初始化过程&spm=1001.2101.3001.5002&articleId=120708234&d=1&t=3&u=f95c4d15b2984ac1b2f404fde5caaaa8)
2135

被折叠的 条评论
为什么被折叠?



