spring 扩展


BeanFactoryPostProcessor 接口
对象实例化之前
1.实现 BeanDefinitionRegistryPostProcessor接口
2.实现 BeanFactoryPostProcessor 接口

BeanPostProcessor接口
创建时还没创建,返回代理对象
3.实现InstantiationAwareBeanPostProcessor接口 (AOP原理SmartInstantiationAwareBeanPostProcessor,BeanFactoryAware)
    beanInstance = this.resolveBeforeInstantiation(beanName, mbdToUse);

    bean = this.applyBeanPostProcessorsBeforeInstantiation(targetType, beanName);
    if (bean != null) {
            bean = this.applyBeanPostProcessorsAfterInitialization(bean, beanName);
    }


对象刚创建doCreateBean()中
4.实现MergedBeanDefinitionPostProcessor接口
    this.applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
    bdp.postProcessMergedBeanDefinition(mbd, beanType, beanName);

populateBean注入属性之前
实现InstantiationAwareBeanPostProcessor接口
ibp.postProcessAfterInstantiation(bw.getWrappedInstance(), beanName)
实现InstantiationAwareBeanPostProcessor接口
ibp.postProcessPropertyValues((PropertyValues)pvs, filteredPds, bw.getWrappedInstance(), beanName))


populateBean注入属性之后
5..实现BeanPostProcessor接口
初始化之前调用wrappedBean = this.applyBeanPostProcessorsBeforeInitialization(bean, beanName);
初始化之后【执行Aware接口方法】invokeAwareMethods(beanName, bean);执行xxxAware接口的方法
BeanNameAware\BeanClassLoaderAware\BeanFactoryAware等
初始化之后调用wrappedBean = this.applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);


bean创建完成最后一步
preInstantiateSingletons()中
smartSingleton.afterSingletonsInstantiated();
6.实现SmartInitializingSingleton接口(@EventListener监听器原理)

ApplicationListener接口
7.实现ApplicationListener接口
 finishRefresh()中调用发布事件(有线程池异步调用)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值