springbean 生命周期
springbean 和java对象得区别:
1.对象:任何符合java语法规则实例化出来的对象
2.springbean: 是spring对普通对象进行了封装为BeanDefinition,beanclass可以理解为是上面的对象,其他的是否加载、描述等都是spring新增的属性信息
springbean实例化流程:
ConfigurationClassPostProcessor
1、BeanDefinitionRegistryPostProcessor-------扫描带注解@Cxxx class 组装成 beanDefinition(springbean)放到--map
2、BeanFactoryPostProcessor----------------修改beanmap
先执行子类BeanDefinitionRegistryPostProcessor---先执行spring内部提供然后执行程序员自己的
先执行spring内部-----用的是自己把一个BeanDefinitionRegistryPostProcessor的实现类ConfigurationClassPostProcessor的bd放到map当中了;想要执行先得实例化----我先从容器当中拿;如果有直接执行;如果没有spring 传一个BeanDefinitionRegistryPostProcessor类型给容器;容器就会从map当中找---找到一个ConfigurationClassPostProcessor;
假设这个时候你提供了一个BeanDefinitionRegistryPostProcessor YY 程序员提供了
在执行父类BeanFactoryPostProcessor----先执行spring内部提供然后执行程序员自己的
spring会先执行内部的,再执行外部程序员实现接口重写的,至于spring怎么知道内部和外部实现,是因为在生成beanmap的时候spring会循环三次,根据不过的条件过滤,spring内部类在启动的时候就不初始化了到了beanmap中。
详细请参考路神:https://blog.csdn.net/java_lyvee/article/details/101793774
最新文章
- oracle---plsql---示例laobai
- poj3311 Hie with the Pie (状态压缩dp,旅行商)
- 多张图片,限制大小,格式.md
- WP_Image_Editor_Imagick 漏洞临时解决方法
- 学习总结 java连接数据库
- github 学习笔记【一】
- iOS开发——语法篇OC篇&;高级语法精讲
- 正确使用TeamViewer VPN
- 从网页psd到html的开发
- mysql中如何更新一个字段的值为它本身的值连接上一个字符串
- Linux学习 -- 权限管理
- 打印ASCII码
- hadoop2-HBase的Java API操作
- Thread.currentThread()和this的区别——《Java多线程编程核心技术》
- h264_rtp打包解包类及实现demo
- Python--Django学习笔记2
- windows下配置lua环境
- nginx动静分离小示例
- Android Socket 知识点汇总
- Electron Browser加载iframe(webview src属性)