一、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方法的定义类