SpringBoot 自动装配原理,加载Bean时机
核心启动类SpringApplication.run() 方法执行流程
1.获取启动监听器
2.构建应用上下文环境:属性集合
3.初始化应用上下文
4.涮新应用上下文前的准备工作:完成属性设置,创建Bean
5.刷新应用上下文
6.应用上下文扩展处理
IOC容器初始化三个阶段:
1.定位Resource
(1)主类所在的包
(2)SPI扩展机制实现的装配器Starter
(3)@Import 指定的类
2.载入BeanDefiniton
3.注册BeanDefinition
自动装配原理
1.启动类启动时,会先创建主配置类对象(@SpringBootApplication)存储到容器currentMap
2.获取启动类@CompanScans basePackage属性:获取需要创建的Bean(@Service,@Controller)
3.获取主配置类符合注解@Import 指定的类有两个(Registrar 、AutoConfigurationImportSelector) 存储 到容器中
4.去加载jar包下META/spring.factory文件 EnableAutoConfiguration开头的类全名对应注入IOC容器的类,过滤筛选创建满足指定条件的@Bean (@Condition 条件) 完成自动装配
SpringBoot 内嵌Tomcat:
spring.factory文件对应ServletWebServerFactoryAutoConfiguration创建
TomcatServletFactory工厂的getWebServer方法 new Tomcat实例 start方法启动tomcat
SpringBoot 自动注册DispatcherServlet
加载自动配置DispatcherServlet、DispatcherServletRegisgisterBean(注册DispactcherServlet到ServletContext :参考Servlet3.0标准)