spring源码分析—— 初始化(aware接口的初始化)
前面说了三种bean的初始化方式,都是自定义的初始化方式,其实spring容器还提供了好多后置接口,
使bean有用更多的功能,例如常用的有ApplicationContextAware,BeanNameAwre等等,我们来看看怎么实现的?
1:准备工作
从运行结果可以看出,spring容器的初始化是在自定义的初始化方法之前完成的,
2:下面来看看源码怎么实现的
在初始化方法initializeBean方法中,首先会invokeAwareMethods方法
然后会调用applyBeanPostProcessorBeforeInitialization方法,因为beanPostProcessors集合在注册时是有序的,所以高优先级的都在前面:第一个就是ApplicationContextAwareProcessor
调用接口初始化:
spring容器的初始化基本就是这两种实现方式。
总结:从这两节可以看出,spring容器初始化,首先会初始化容器中预留的后置接口,然后在初始化自定义的初始化接口。