赞
踩
通过 loadBeanDefinitions 扫描所有xml配置、注解将Bean记录在beanDefinitionMap中
通过createBean遍历beanDefinitionMap创建bean
2.1构建对象
1 容器通过 createBeanInstance 进行对象构造
2 准备参数
3 构造对象
2.2 填充属性
通过populateBean方法为Bean内部所需的属性进行赋值
通过initializeBean对填充后的实例进行初始化
(1)填充初始化容器相关信息
通过invokeAwareMethods方法:为实现aware接口【信息感知接口】的Bean 设置注入beanName、beanFactory等容器信息
(2)初始化构造方法
通过invokeInitMethods方法进行初始化:如果Bean实现InitializingBean接口进行处理【未实现则不进行】
(3)Bean的后置处理
在invokeInitMethods 的前后进行
在后置处理中处理了包括:AOP【AnnotationAwareAspectJAutoProxyCreator】
负责构造后@PostConstruct和销毁前@PreDestroy的InitDestoryAnnotationBeanPostProcessor等
(4)注册销毁
通过reigsterDisposableBean处理实现了DisposableBean接口的Bean的注册
通过 addSingleton 方法,将Bean 加入到单例池 singleObjects
4.1 销毁前
调用 bean中@PreDestory 注解的方法
通过 postProcessBeforeDestruction 方法调用destoryBean逐一销毁Bean
4.2 销毁
调用 destoryBeans
4.3 执行客户自定义销毁
调用 invokeCustomDestoryMethod
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。