回顾上篇
上篇文章《循环依赖》中分析了A类要注入B类的属性,B类中又要注入A类的属性时,Spring是如何通过缓存来解决循环依赖的问题。循环依赖已经分析完了,那么接下来我们就分析一下注入的逻辑又是什么样的。
分析源码实现
首先在xml配置文件中添加下面的配置。表示A类中要注入属性B。
<bean id="a" class="com.guiji.bean.A">
<property name="b" ref="b"/>
</bean>
然后执行代码我们看到populateBean()这个方法。
protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) {
if (bw == null) {
if (mbd.hasPropertyValues()) {
throw new BeanCreationException(
mbd.getResourceDescription(), beanName, "Cannot apply property values to null instance");
}
else {
return;
}
}
if