Spring:SpringIOC容器初始化主體流程
一、IOC容器體系
IoC容器是Spring的核心模塊,是抽象了對(duì)象管理、依賴關(guān)系管理的框架解決方案。
Spring 提供了很多的容器,其中 BeanFactory 是頂層容器(根容器),不能被實(shí)例化,它定義了所有 IoC 容器 必須遵從的一套原則,具體的容器實(shí)現(xiàn)可以增加額外的功能,比如我們常用到的ApplicationContext,其下更具體的實(shí)現(xiàn)如 ClassPathXmlApplicationContext 包含了解析 xml 等一系列的內(nèi)容,AnnotationConfigApplicationContext 則是包含了注解解析等一系列的內(nèi)容。
Spring IoC 容器繼承體系非常聰明,需要使用哪個(gè)層次用哪個(gè)層次即可,不必使用功能大而全。
BeanFactory頂級(jí)接口方法棧
BeanFacotry容器繼承體系
通過其接口設(shè)計(jì),我們可以看到我們一貫使用的 ApplicationContext 除了繼承BeanFactory的子接口,還繼承了ResourceLoader、MessageSource等接口,因此其提供的功能也就更豐富了。
二、IOC容器初始化主流程
Spring IoC 容器初始化的關(guān)鍵環(huán)節(jié)就在 AbstractApplicationContext#refresh() 方法中,我們查看 refresh 方法來俯瞰容器創(chuàng)建的主體流程。