Spring容器的IOC和DI概念
IOC(控制反转):对于组件的控制权进行了转移,传统的程序设计是由客户端new出对象,是程序主动创建所依赖的对象。而IOC是专门将对象的创建交给容器处理,组件的控制器交由到了IOC容器中。
DI(依赖注入):组件之间的依赖关系由容器在运行期决定,容器动态将某个依赖关系注入到组件中,主要为了提升组件的复用。
IOC侧重于实现了容器对于组件的管理,DI侧重于对于组件的依赖关系。
Bean加载过程
早期的Spring都是通过配置XML进行Bean加载的,过程大致如下:
XML是配置文件,定义了Spring标签定义;
Resource是Spring对于资源的抽象;
Document是从Resource中读取的XML定义解析为Document;
BeanDefinition是XML文件定义Java对象的一个过程;
Bean最后被实例化成Object对象;
Resource持有URL Resource,主要是为了读取XML的Resource。
读取到XML的Resource之后主要进行XML标签解析,也就是Resource -> Document -> BeanDefinition过程。
BeanDefinition是XML文档的一种表现形式。
IOC容器初始化