天天看点

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的销毁了