Spring InitializingBean 接口以及Aware接口实现的原理

 

  

关于Spring InitializingBean 接口以及Aware接口实现的其实都在

 第11步中;

finishBeanFactoryInitialization() 方法中完成了3部分的内容:

1.完成对单例的非懒加载的bean 进行初始化

2.对于InitializingBean 接口 spring 会自动调用它的 afterPropertiesSet方法;

3.还进行了对实现了Aware 接口实现的调用

 

 

多说无益,我们来看一看,它是怎么完成初始化,以及接口的调用;

a:  第一步肯定是我们的入口refresh()方法:我们进入 finishBeanFactoryInitialization()中

b: 我们进入实例化的方法中: beanFactory.preInstantiateSingletons(); 

c : 就是创建bean 的方法:我们点进去瞧瞧

d :经过doGetBean (),我们需要去看createBean()实现 

e :关键的步骤来了,所有的方法都在createBean()中实现,实现类是AbstractAutoWrieCapableBeanFactory() 中,有很多有用的方法;

f:继续调用doCreateBean(); 

 

g: 对bean 的实例化。具体你们可以去往下点,通过反射实例化对象

 

 

h :在初始化成功后,就开始检测这个bean 是否实现了InitializingBean 以及Aware接口;就是这个initializeBen()

 

我们点进去看看。主要两个方法:  

  (1),invokeAwareMethods():调用实现了Aware 接口的方法; 

  (2), invokeInitMethod(): 调用实现InitializingBean 的方法:

 

 我们看一看Aware 接口的调用实现:

 

InitializingBean 接口调用实现:会调用afterPropertiesSet()方法:

    哈哈,在Springmvc中RequestHandlerMapping() 的URL注册就是这么实现的 

 

从这个顺序也可以看粗:Aware 先执行后是InitializingBean

好了,有没有了解呢? 

 

转载于:https://www.cnblogs.com/iscys/p/9903766.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值