IOC容器在处理Bean的时候有三个关键点都发生在AbstractAutowireCapableBeanFactory#doCreateBean()方法中
1. createBeanInstance() -> 实例化Bean
2. populateBean() -> 填充属性
3.initializeBean() -> 处理Bean初始化后的各种回调事件
在实例化和设置属性之后 进入到initializeBean方法中
先调用invokeAwareMethod()方法执行 Aware回调
在执行BeanPostProcessor#postProcessorBeforeInitialization()
在调用InitializingBean的afterPropertiesSet()方法 ,该方法是设置完属性后回调的
然后调用xml里指定的init-method方法(如果没指定执行默认的)
再调用BeanPostProcessor#postProcessorAfterInitialization() 进行后置处理
此时Bean已经完全创建好了
如果该Bean实现了DisposableBean#destroy方法 容器关闭时先调用此方法
然后在调用xml中指定的destory-method方法(如果没指定执行默认的)
网友评论