上篇文章讲到
创新互联建站从2013年开始,先为曲阜等服务建站,曲阜等地企业,进行企业商务咨询服务。为曲阜企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。spring创建对象
创建完对象完毕之后,就要对类的属性进行注入了,这就是属性注入
代码示例@Component
public class BeanA {
@Autowired
private BeanB beanB;
}
@Component
public class BeanB {
}
我们以最简单的例子来观察源码,是怎么注入的
入口在创建完毕对象后,即刻就要对对象进行属性注入
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
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧