网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

spring依赖注入populateBean-创新互联

上篇文章讲到

创新互联建站从2013年开始,先为曲阜等服务建站,曲阜等地企业,进行企业商务咨询服务。为曲阜企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

spring创建对象

创建完对象完毕之后,就要对类的属性进行注入了,这就是属性注入

代码示例
@Component
public class BeanA {
	@Autowired
	private BeanB beanB;
}
@Component
public class BeanB {
}

我们以最简单的例子来观察源码,是怎么注入的

入口

在创建完毕对象后,即刻就要对对象进行属性注入

  • org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean
for (BeanPostProcessor bp : getBeanPostProcessors()) {		if (bp instanceof InstantiationAwareBeanPostProcessor) {InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
					//依赖注入过程,@Autowired的支持 属性对,bean的实例对象,beanName
					PropertyValues pvsToUse = ibp.postProcessProperties(pvs, bw.getWrappedInstance(), beanName);
					if (pvsToUse == null) {if (filteredPds == null) {	filteredPds = filterPropertyDescriptorsForDependencyCheck(bw, mbd.allowCaching);
						}

						//老版本用这个完成依赖注入过程,@Autowired的支持
						pvsToUse = ibp.postProcessPropertyValues(pvs, filteredPds, bw.getWrappedInstance(), beanName);
						if (pvsToUse == null) {	return;
						}
					}
					pvs = pvsToUse;
				}
			}
  • 搞一个条件断点

在这里插入图片描述
断点之后发现有很多个实现,我们直接从字面意思去看org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor#postProcessProperties
在这里插入图片描述

  • 我们直接来到实现的代码
    在这里插入图片描述
  • 走过这行代码后,这个metaData的属性栏里面多了一个member需要注入的
    在这里插入图片描述
  • 这个时spring只要拿着这个对象的类型或者名称去容器里面去找就可以了
    在这里插入图片描述
    就相当于进行一次getBean操作了,这也是spring为什么会有循环依赖问题的原因,bean完全创建完成,触发依赖对象的创建,依赖对象可能还有依赖对象,这样就容易造成循环依赖问题了

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:spring依赖注入populateBean-创新互联
URL地址:http://bjjierui.cn/article/cdgjsj.html

其他资讯