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