浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
来源:互联网 发布:vb获取电脑名称 编辑:程序博客网 时间:2024/05/21 06:43
接着上次那个后记接着说,我们已经知道了分析了refresh()这个方法中的关于BeanFactoryPostProcessor的执行的代码分析:
因为任何实现了BeanFactoryPostProcessor接口的bean首先要做的事就是先把自己实例化好,所以我们花了很大篇幅讲了getBean这个spring的核心方法~
我们看的都是invokeBeanFactoryPostProcessors这个方法682行的代码
执行完682行代码后,控制台的打印日记如下:
我们接着分析第684行代码
进入invokeBeanFactoryPostProcessors这个方法
好了,我们BeanFactoryPostProcessor的postProcessBeanFactory的方法终于实现了:
到此为止,关于BeanFactoryPostProcessor的实例化全部结束了,我们开始继续跟踪~
现在还有一个问题就是SpringSimpleMultiBean.Java这个bean实现了BeanPostProcessor接口,但是并没有执行该接口的方法,因为此刻还没有注册BeanPostProcessor
接着看refresh()这个方法
464行写出先要对实现BeanPostProcessor接口的bean进行注册,然后在479行实例化其他普通的被spring管理的没有实现BeanFactoryPostProcessor接口的bean时,再运行BeanPostProcessor的方法
其实上个章节我们已经截图说明BeanPostProcessor的具体实现什么时候执行了
对的,也就是说在init-method方法和InitializingBean接口之前之前执行,很好理解,因为上次我们讲过BeanPostProcessor也是可以对bean进行临时修改的,修改之后的bean才是用户自定义的bean也就是我们想要的bean,然后再运行init-method或者afterPropertiesSet方法,才是合理~
当spring容器完全初始化好我们定义的spring-init.xml中的文件时,控制台打印的就是:
所有的接口都打印了
最后我们在看SpringSimpleMultiBeanTest.java这个测试类
此时applicationContext.getBean()去获取的时候,其实bean已经实例化好了,spring默认是单例的,除非你配置该bean为懒加载,才会在这个时候进行实例化~
下一节,我们具体看下spring是如何注入属性值的~
- 浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记1
- 浅析Spring IoC源码(十一)Spring refresh()方法解析之一
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析之一
- 浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
- 做一个合格的程序猿之浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
- 做一个合格的程序猿之浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
- 浅析Spring IoC源码(六)BeanFactoryPostProcessor
- spring ioc 源码解析
- Spring IOC 源码解析
- spring ioc源码解析
- spring源码解析- IOC
- spring ioc源码解析
- Spring 源码解析IoC
- 浅析Spring IoC源码(五)再谈BeanPostProcessor(2)
- spring源码浅析之ioc
- Spring IOC-WebApplicationContext刷新(was.refresh())
- Python抓取CSV文件中数据
- Spark 属性使用说明
- Docker安装Mysql数据库容器
- DOM学习
- 算法提高 9-3摩尔斯电码
- 浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
- I / O 流
- C++——tarjan模板
- 使用Intellij创建第一个Springboot程序
- git使用
- 翻转字符串中的子串
- Shiro简介
- [FAQ18419][audio speech]通话免提模式如何使用副mic
- 4.C#:string.Split 和 string.Join