spring源码-refresh中的obtainFreshBeanFactory
AbstractApplicationContext中的prepareBeanFactory

从注释来看是要去告诉子类刷新bean工厂,进入观察

继续往下找,找到它的实现类

什么都不做,事实也是如此,这里的CAS不会进入,直接到this.beanFactory.setSerializationId

这里需要去判断传入的id是否存在

进去看看这个identityToString是在干什么

拿到Name将对象转化为字符串再转为integer,最终拼接后返回
那么最后就会进入这一段if中

将Id和弱引用放入map中,弱引用的好处就是不管在是否引用下都会被垃圾回收,那么放入之后我们以后就可以通过serializationId快速的找到DefaultListableBeanFactory了

getBean()就是我们熟悉的genericApplicationContext的方法,返回的beanFactory就是DefaultListableBeanFactory

总结就是在我们刚开始创建容器时obtainFreshBeanFactory就是做了拿到反序列化Id和DefualtListentableBeanFactory存储,支持一个反序列化拿到BeanFactory的功能,至于注释所说的刷新Bean工厂在我们刚创建时这个分支中并没有体现到

浙公网安备 33010602011771号