前面说了三种bean的初始化方式,都是自定义的初始化方式,其实spring容器还提供了好多后置接口,

使bean有用更多的功能,例如常用的有ApplicationContextAware,BeanNameAwre等等,我们来看看怎么实现的?

1:准备工作

spring源码分析—— 初始化(aware接口的初始化)

 

 从运行结果可以看出,spring容器的初始化是在自定义的初始化方法之前完成的,spring源码分析—— 初始化(aware接口的初始化)

 

 

2:下面来看看源码怎么实现的

在初始化方法initializeBean方法中,首先会invokeAwareMethods方法

spring源码分析—— 初始化(aware接口的初始化)

 

 

 

 

 spring源码分析—— 初始化(aware接口的初始化)

 

然后会调用applyBeanPostProcessorBeforeInitialization方法,因为beanPostProcessors集合在注册时是有序的,所以高优先级的都在前面:第一个就是ApplicationContextAwareProcessor

 spring源码分析—— 初始化(aware接口的初始化)

 

spring源码分析—— 初始化(aware接口的初始化)

 

 调用接口初始化:

spring源码分析—— 初始化(aware接口的初始化)

 

 

spring容器的初始化基本就是这两种实现方式。

总结:从这两节可以看出,spring容器初始化,首先会初始化容器中预留的后置接口,然后在初始化自定义的初始化接口。

 

相关文章:

  • 2021-07-30
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-09
  • 2021-08-21
  • 2022-01-31
  • 2021-11-08
猜你喜欢
  • 2021-07-17
  • 2021-06-26
  • 2021-07-10
  • 2021-12-13
  • 2021-11-15
  • 2021-08-03
  • 2021-09-23
相关资源
相似解决方案