AbstractApplicationContext的refresh()方法进行启动的,这个方法标准IoC容器的正式启动:
具体如下:
1. 第一个过程是Resource定位过程。这个Resource定位指的是BeanDefinition的资源定位,它由ResourceLoader通过统一的Resource接口来完成,这个Resource对各种形式的BeanDef-inition的使用都提供了统一接口。对于这些BeanDefinition的存在形式,相信大家都不会感到陌生。比如,在文件系统中的Bean定义信息可以使用FileSystemResource来进行抽象;在类路径中的Bean定义信息可以使用前面提到的ClassPathResource来使用,等等。这个定位过程类似于容器寻找数据的过程,就像用水桶装水先要把水找到一样。
2. 第二个过程是BeanDefinition的载入。这个载入过程是把用户定义好的Bean表示成IoC容器内部的数据结构,而这个容器内部的数据结构就是BeanDefinition。下面介绍这个数据结构的详细定义。具体来说,这个BeanDefinition实际上就是POJO对象在IoC容器中的抽象,通过这个BeanDefinition定义的数据结构,使IoC容器能够方便地对POJO对象也就是Bean进行管理。在下面的章节中,我们会对这个载入的过程进行详细的分析,使大家对整个过程有比较清楚的了解。
3. 第三个过程是向IoC容器注册这些BeanDefinition的过程。这个过程是通过调用BeanDefinitionRegistry接口的实现来完成的。这个注册过程把载入过程中解析得到的BeanDefinition向IoC容器进行注册。通过分析,我们可以看到,在IoC容器内部将BeanDefinition注入到一个HashMap中去,IoC容器就是通过这个HashMap来持有这些BeanDefinition数据的.
值得注意的是,这里谈的是IoC容器初始化过程,在这个过程中,一般不包含Bean依赖注入的实现。在SpringIoC的设计中,Bean定义的载入和依赖注入是两个独立的过程
- 概述
- Spring的使命
- 环境变量
- spring架构
- Spring各版本特性
- Spring3.1新特性
- spring顶级项目
- spring基础
- spring环境变量
- 依赖注入
- spring获取bean方法
- BeanFactory vs FactoryBean
- JavaBean装配
- XML显式配置
- 基于JAVA配置
- 自动化装配bean
- SpringBean的作用域
- Spring应用上下文实现
- springbean的生命周期
- 自定义Bean的创建与销毁
- Spring容器启动过程
- spring加载xsd文件的流程
- spring扩展接口
- Spring主要类功能说明
- spring事务管理
- 事务特性
- 数据库事务隔离级别
- 事务隔离性问题
- spring事务隔离级别
- 事务传播行为
- @Transactional
- 循环依赖
- 构造器注入
- 循环依赖原理
- spring循环依赖原理
- spring三级缓存
- Spring注解
- @Component
- @ComponentScan
- @Autowired
- @Import
- @ImportResource
- @Profile
- @Conditional
- @Qualifier
- @Scope
- @PropertySource
- @Value
- @EnableScheduling
- SpEL-Spring表达式
- Spring-AOP
- SpringAOP五种通知类型
- AOP术语
- SpringMVC
- MVC原理图
- SpringMVC工作原理
- springboot
- @SpringCloudApplication
- springboot tomcat配置
- Spring Boot Starter POMs
- Spring Boot technical starters
- spring boot事件类型
- Springboot日志
- SpringCloud
- springcloud微服务解决方案
- 服务组件
- 注册中心
- Eureka
- Spring Cloud Zookeeper
- nacos
- Hystrix熔断原理
- Hystrix应用
- Spring Cloud Config
- 服务网关
- Zuul
- Spring Cloud Gateway
- 服务调用及负载
- Ribbon
- Feign&OpenFeign
- Turbine
- actuator
- springboot & springcloud
- springcloud vs dubbo
- 常见面试题
- BeanFactory和FactoryBean
- @Autowired/@Resource和@Inject的区别
- Singleton bean注入prototype bean
- 附录