没有合适的资源?快使用搜索试试~ 我知道了~
spring初始化过程
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 13 浏览量
2020-12-02
20:21:44
上传
评论
收藏 4KB TXT 举报
温馨提示
试读
3页
beanFactory.preInstantiateSingletons()的初始化过程详解,包含了所有的调用过程。
资源推荐
资源详情
资源评论
beanFactory.preInstantiateSingletons(),初始化和实例化操作
1. 循环beanDefinitionNames中的名称,调用getBean(beanName)
1. 调用doGetBean(name, null, null, false)
1. ```java
sharedInstance = getSingleton(beanName, () -> {
try {
return createBean(beanName, mbd, args);
} catch (BeansException ex) {
destroySingleton(beanName);
throw ex;
}
});
//在getSingleton中调用这个lambda表达式中的createBean
```
1. Object beanInstance = doCreateBean(beanName, mbdToUse, args)
1. 实例化对象,instanceWrapper = createBeanInstance(beanName, mbd, args);
1. instantiateBean(beanName, mbd)
1. beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, parent)
1. BeanUtils.instantiateClass(constructorToUse)
1. 实例化完成,return ctor.newInstance(argsWithDefaultValues)
2. 添加到三级缓存中:addSingletonFactory(beanName, () -> getEarlyBeanReference(beanName, mbd, bean));
3. 初始化,降属性赋值,populateBean(beanName, mbd, instanceWrapper);
1. 开始填充属性值,通过AutowiredAnnotationBeanPostProcessor,InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
1. 元数据注入,metadata.inject(bean, beanName, pvs);
1. 循环有@autowire的属性,element.inject(target, beanName, pvs)
1. 解决依赖value = beanFactory.resolveDependency(desc, beanName, autowiredBeanNames, typeConverter);
1. 循环beanDefinitionNames中的名称,调用getBean(beanName)
1. 调用doGetBean(name, null, null, false)
1. ```java
sharedInstance = getSingleton(beanName, () -> {
try {
return createBean(beanName, mbd, args);
} catch (BeansException ex) {
destroySingleton(beanName);
throw ex;
}
});
//在getSingleton中调用这个lambda表达式中的createBean
```
1. Object beanInstance = doCreateBean(beanName, mbdToUse, args)
1. 实例化对象,instanceWrapper = createBeanInstance(beanName, mbd, args);
1. instantiateBean(beanName, mbd)
1. beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, parent)
1. BeanUtils.instantiateClass(constructorToUse)
1. 实例化完成,return ctor.newInstance(argsWithDefaultValues)
2. 添加到三级缓存中:addSingletonFactory(beanName, () -> getEarlyBeanReference(beanName, mbd, bean));
3. 初始化,降属性赋值,populateBean(beanName, mbd, instanceWrapper);
1. 开始填充属性值,通过AutowiredAnnotationBeanPostProcessor,InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
1. 元数据注入,metadata.inject(bean, beanName, pvs);
1. 循环有@autowire的属性,element.inject(target, beanName, pvs)
1. 解决依赖value = beanFactory.resolveDependency(desc, beanName, autowiredBeanNames, typeConverter);
资源评论
蓝色红宝石
- 粉丝: 1
- 资源: 3
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Q1.py
- 企业政府灵智电子政务网站系统-lingzhi.rar
- Thinkphp内核开发Lsky Pro兰空图床网站源码.rar
- 基于FPGA(XC6SLX9)+SDRAM+AD7829多通道数据采集板硬件(原理图+PCB)工程文件.zip
- 阿里巴巴精准测试体系:基于代码链路分析的性能优化方案
- mmexport1714217773503.jpg
- 【图片网盘外链系统5.0】全新前端UI界面设计 支持图片违规检测网站自适应H5源码.rar
- jsp+sql的BBS论坛系统.zip
- 网盘外链PHP开发彩虹网盘外链程序源码.rar
- 2023年最新文件快递柜系统网站源码 保护用户隐私的匿名口令分享和临时文件分享功能.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功