spring要了解的幾個類
1、把xml、@bean、@Component的bean放進Map<String, BeanDefinition> beanDefinitionMap中,bean的類名放進List<String> beanDefinitionNames中
2、會提前初始化和執行個體化自定義和spring自帶的增強器beanPostProcessor 在refresh().registerBeanPostProcessors()
3、通過周遊bean進行執行個體化createBeanInstance(beanName, mbd, args)并且調用并調用構造方法
4、放入三級緩存中singletonFactories,提前暴露 ,目的為了不用重複建立bean,放在工廠友善bean的擴充addSingletonFactory()
5、填充屬性populateBean(beanName, mbd, instanceWrapper)
6、初始化bean之前,執行增強器before 方法 BeforeInitialization
7、初始化bean,包括postProcessor增強器(@PostConstruct在這裡執行),方法invokeInitMethods(beanName, wrappedBean, mbd)
8、初始化bean之後,執行增強器before方法 AfterInitialization,方法applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName) ,其中AOP就是在這裡給bean替換成代理對象
9:銷毀過程

接下來會挑幾個重點的方法看
View Code
非常中要doGetBean()方法,其中初始化、執行個體化
其中一個doGetBean是建立對象
最後就是bean的銷毀了