Java小节,spring源码分析
Posted 雨兮木话
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java小节,spring源码分析相关的知识,希望对你有一定的参考价值。
我们知道Spring容器的 Bean 可以是单例 (把 scope 配置为 singleton 或者不设置 scope,即默认是单例),这些单例的 Bean 被初始化之后就被Spring注册到BeanFactory管理了起来,方便下次直接使用。除了配置的单例Bean,我们还可以调用BeanFactory的Bean直接注册一个单例Bean。
objectFactory singletonFactory 工厂---产生一个实例,三级缓存put一个从二级缓存中产生出的一个对象。
那么为什么spring不从二级缓存拿?
singletonObjects:一级缓存,存储beanName(key)和bean实例(value)之间的关系,这里存储的bean实例是已经完全创建完成的bean实例
earlySingletonObjects:二级缓存,也是存储beanName和bean实例之间的关系,注意和singletonObjects的区别,这里存储的bean实例是没有创建完成的bean实例,即该bean还在创建过程中,为了解决循环引用的问题,将未创建完全的bean缓存起来。
singletonFactories:三级缓存,用于保存beanName和bean工厂之间的关系。当三级缓存创建bean成功后,会将bean放入二级缓存,并将beanName对应的beanFactory从singletonFactories中移除。
ObjectFactory:有getobject()方法,在创建单例bean的过程中,为了解决循环依赖问题,会创建beanName对应的ObjectFactory放入SingletonFactoies中,达到提前曝光bean的目的。三级缓存singletonFactory.getObject()(三级缓存)获取
Spring涉及到的设计模式有单例,工厂,适配器,观察者代理等。
下节我么讲学习相关设计模式,通过spring源码。
好的,本期就介绍的这里,喜欢我,关注我,了解我,我是雨兮
以上是关于Java小节,spring源码分析的主要内容,如果未能解决你的问题,请参考以下文章
Java面试Spring源码分析 —— Spring IoC
《Java Spring框架》Spring ConfigurationClassPostProcessor源码分析
Java面试Spring源码分析 —— Spring IoC