手写spring6-BeanPostProcessor

spring提供的一种扩展接口:BeanPostProcessor:Bean的后置处理器

前面讲的spring提供的扩展接口总结:BeanNameAware接口实现回调,InitializingBean接口实现初始化

BeanPostProcessor接口,用来在做某事之前、之后,完成某事。

BeanPostProcessor有很多子接口,比如:

InstantiationAwareBeanPostProcessor(实例化回调BeanPostProcessor)接口:实例化前方法、实例化后方法、属性赋值后方法。


在spring包中新建接口BeanPostProcessor

在zhouyu包中新建一个类ZhouyuBeanPostProcessor,实现接口和方法

 

spring会调用这两个方法,方法里面传的是bean对象和bean的名字。而ZhouyuBeanPostProcessor 就可以拿到对象和名字,然后在这两个方法体里面,想干啥就干啥。

在ZhouyuApplicationContext类的scan()方法中,添加上:

用于判断当前类clazz是不是实现了BeanPostProcessor接口,如果是,直接进行实例化

 

 

 scan的过程中,发现了实现了BeanPostProcessor的类,就实例化,并存到beanPostProcessorList里面,方便之后使用。 

上图,实例化的方式不严谨,spring源码是用的getBean方法,从容器中取对象。

 实现了BeanPostProcessor的对象创建好了,也加入到list中了,如何使用这个对象?

比如在给某个对象初始化之前使用:

所以在createBean()方法中,初始化之前:

遍历beanPostProcessorList中的beanProcessor对象,并调用beanPostProcessor中的方法,把当前对象和对象名传进去。方法的具体逻辑实现,要程序员自己写

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值