博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BeanFactoryPostProcessor和BeanPostProcessor
阅读量:6567 次
发布时间:2019-06-24

本文共 1680 字,大约阅读时间需要 5 分钟。

1. BeanFactoryPostProcessor调用(见AbstractApplicationContext.refresh):

>> 创建DefaultListableBeanFactory --> loadBeanDefinitions

1)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(编码注册)

2)BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry(配置注册):PriorityOrdered排序 --> Ordered排序 --> 无序

3)BeanFactoryPostProcessor.postProcessBeanFactory(编码注册):BeanDefinitionRegistryPostProcessor --> BeanFactoryPostProcessor

4)BeanFactoryPostProcessor.postProcessBeanFactory(配置注册):PriorityOrdered排序 --> Ordered排序 --> 无序

 

2. BeanPostProcessor注册:

1)PriorityOrdered排序 --> Ordered排序 --> 无序

2)MergedBeanDefinitionPostProcessor

 

3. BeanPostProcessor调用(见DefaultListableBeanFactory.createBean):

1)InstantiationAwareBeanPostProcessor.applyBeanPostProcessorsBeforeInstantiation(resolveBeforeInstantiation)

>> 获取bean --> 6

>> createBeanInstance(默认:CglibSubclassingInstantiationStrategy.instantiate) --> 2

2)MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinitioInstantiationAwareBeanPostProcessor

3)InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation

>> autowireByName / autowireByType

4)InstantiationAwareBeanPostProcessor.postProcessPropertyValues

>> applyPropertyValues

5)BeanPostProcessor.postProcessBeforeInitialization(@postConstruct)

>> InitializingBean.afterPropertiesSet --> invokeInitMethod(init-method )

6)BeanPostProcessor.postProcessAfterInitialization

>> 单实例(容器初始化完成):SmartInitializingSingleton.afterSingletonsInstantiated

 

4. 应用

1)BeanFactoryPostProcessor

2)BeanPostProcessor:ApplicationContextAwareProcessor、InitDestroyAnnotationBeanPostProcessor、AutowiredAnnotationBeanPostProcessor、AOP

转载于:https://www.cnblogs.com/bjorney/p/10424222.html

你可能感兴趣的文章
空类,虚函数类,虚继承类的空间大小
查看>>
sysaux表空间数据库块损坏/游离块的修复
查看>>
OSPF中stub area配置实例
查看>>
Exchange 2010 OAB无法更新
查看>>
CentOS系统中PHP和MySQL的升级方法
查看>>
Excel 统计IP
查看>>
pptpd的远程连接成功并使用
查看>>
javascript操作cookie
查看>>
我的友情链接
查看>>
部署CFCA_RA本地测试环境
查看>>
JAVA取属性
查看>>
我的友情链接
查看>>
docker容器时区与宿主机不一致的解决方法
查看>>
ubuntu 13.10 amd64安装ia32-libs
查看>>
OSPF选举过程的小发现
查看>>
外包 银行数字签名U盘的用法
查看>>
我的友情链接
查看>>
Linux快捷键-命令行下
查看>>
java.util.ConcurrentModificationException
查看>>
Oracle中TO_DATE格式
查看>>