16、生命周期-BeanPostProcessor原理

16.1 打断点运行postProcessBeforeInitialization

可以看到先执行的顺序为:

  1. applyBeanPostProcessorsBeforeInitialization
  2. invokeInitMethods
  3. applyBeanPostProcessorsAfterInitialization

16.2 BeanPostProcessor原理

  • 遍历得到容器中所有的BeanPostProcessor ,挨个执行 postProcessBeforeInitialization,一旦返回null,跳出for循环,不会执行后面的BeanPostProcessor
populateBean() 给bean进行属性赋值
initializeBean(){
applyBeanPostProcessorsBeforeInitialization();
invokeInitMethods(); // 执行自定义初始化
applyBeanPostProcessorsAfterInitialization();
}
@Override
public Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)
throws BeansException { Object result = existingBean;
for (BeanPostProcessor processor : getBeanPostProcessors()) {
Object current = processor.postProcessBeforeInitialization(result, beanName);
if (current == null) {
return result;
}
result = current;
}
return result;
}

最新文章

  1. [LeetCode] Encode and Decode Strings 加码解码字符串
  2. Chrome 开发工具之Network
  3. Oracle 在线重定义表分区
  4. IOS Emoji表情
  5. LSTM 分类器笔记及Theano实现
  6. 第五节:表单标签的用法——value绑定和修饰符
  7. (企业面试部分)超详细思路讲解SQL语句的查询实现,及数据的创建。
  8. 驱动开发学习笔记. 0.01 配置arm-linux-gcc 交叉编译器
  9. Android那些事儿之LBS定位,实践测试lbs
  10. 使用多种方式实现遍历HashMap
  11. docker学习3-虚拟网络模式
  12. viewPage
  13. 关于CQRS(老外经典好文)
  14. 关于Windows 7的64位系统不兼容某些控件的问题
  15. 数学概念——A 几何概型
  16. .net core 13
  17. HashMap方法介绍
  18. fuser:command not found
  19. 中国省市县数据库sql文件(2017年10月31日之前)
  20. KALI安装与环境配置

热门文章

  1. python之 -> 的含义
  2. 去掉右键Open Folderas Intellij IDEA Project
  3. Navicat连接Oracle数据库用户权限问题
  4. 1255: 打怪升级(Java)
  5. go if 便捷语句
  6. CentOS7.x使用overlay2文件系统
  7. qt翻译和国际化的探讨。
  8. 嗯 第二道线段树题目 对左右节点和下标有了更深的理解 hdu1556
  9. Myatis之bind标签
  10. C#基础--AbStract与Interface