天天看點

Spring的bean的生命周期

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:銷毀過程

Spring的bean的生命周期

  接下來會挑幾個重點的方法看

Spring的bean的生命周期
Spring的bean的生命周期

View Code

Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期

  非常中要doGetBean()方法,其中初始化、執行個體化

Spring的bean的生命周期
Spring的bean的生命周期

其中一個doGetBean是建立對象

Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期
Spring的bean的生命周期

最後就是bean的銷毀了