我们接着上一章的内容继续讲解。
这里说点题外话,最近一个是因为五一,再一个因为工作的原因,还有自己比较懒吧,都想放弃了,不想写了。。感觉没什么用。但是又想到,不能半途而废,最起码这一系列得写完吧。感觉没什么用,是不是写的还是太少?这样安慰自己。哈哈。。希望能给坚持不下去的童鞋带来一些动力。
还是照样,贴代码。
本节重点讲标红的这一句代码。下一节我们再讲解三级缓存(getSingleton这个方法)的内容。
这行上边的代码无需多解释,我们着重看红色部分。点进去,进入
前面几行代码主要是判断bean name是否是&开头的,bean的实例是否是FactoryBean。
如果beanName不是以&开头,并且beanInstance是FactoryBean类型的,才能往下走。一般情况下,都会是这种情况。
1、同样,从缓存(这里是取类的实例,和之前的缓存不一样,之前的缓存是factory实例)里面取实例,如果取不到,则进入getObjectFromFactoryBean方法。
这个方法应该比较简单。概括的说就是调用Factorybean中的getObject()方法获取实例,然后放到factoryBeanObjectCache缓存中。
看一下doGetObjectFromFactoryBean这个方法的内容。
重点就是这行,还是很简单的吧。
好了,今天的内容比较简单,下一节我们把著名的spring三级缓存讲讲。