`
baitian
  • 浏览: 30177 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DefaultSingletonBeanRegistry

 
阅读更多
earlySingletonObjects: contains bean haven't been injected.
dependentBeanMap: <bean -- set bean called the key bean>
dependenciesForBeanMap: <bean -- set bean  be called by the key bean>
containedBeanMap: <bean -- set bean be contained>
desposableBeans: <bean -- bean that actually exec destroy function >

1.add
1.1 addSingleton
add to singletonObjects
remove from singletonFactories
remove from earlySingletonObjects
add to registeredSingletons
1.2 addSingletonFactory: resolve circular references
if singletonObjects not contains then bean,then
remove from singletonFactories
remove from earlySingletonObjects
add to registeredSingletons
end if;


1.3 registerDisposableBean
add to disposableBeans,

1.4 registerDependentBean
add to dependentBeanMap
add to dependenciesForBeanMap

1.5 registerContainedBean
add to containedBeanMap
add to dependentBeanMap
add to dependenciesForBeanMap


2.get
2.1 get with ObjectFactory
search singletonObjects
if singletonObjects not have , then
call beforeSingletonCreation
get from ObjectFactory
call afterSingletonCreation
add to singletonObjects
remove from singletonFactories
remove from earlySingletonObjects
add to registeredSingletons
end if;
2.2 get with none ObjectFactory
search singletonObjects
if singletonObjects not have ,then
search earlySingletonObjects
if not have , then
get from ObjectFactory
add to earlySingletonObjects
remove from singletonFactories
add to singletonObjects
end if;
end if;

3.select if exists
search singletonObjects

4.destory
4.1 destory single element
remove from singletonObjects
remove from singleFactories
remove from earlySingletonObjects
remove from registeredSingletons
remove from disposableBeans
destory beans that called this bean
destory this
destory contained beans
remove from dependentBeanMap (remove reference for this bean called)
remove from dependenciesForBeanMap
分享到:
评论

相关推荐

    spring bean的循环依赖完全掌握.pdf

    3. `DefaultSingletonBeanRegistry#getSingleton("a", true)`: 尝试从缓存中获取 Bean,如果可以从缓存中获取到对象,就不必去完成后续的实例化、属性填充、初始化、AOP 代理,因为不管这个对象是从哪一级缓存中获取...

    Spring源码学习三:BeanFactory解析1

    DefaultListableBeanFactory还继承了`DefaultSingletonBeanRegistry`,这是一个内部类,专门负责管理单例Bean。它维护了一个单例对象的缓存,确保每次请求同一个单例Bean时返回的是同一个实例。同时,`...

    36 SpEL 正则表达式应用示例及背后原理探究慕课专栏1

    我们可以看到从`SpELTest`类的`main`方法开始,逐步深入到Spring框架的各个组件,包括`AbstractApplicationContext`的刷新方法、`DefaultListableBeanFactory`的bean初始化过程,以及`DefaultSingletonBeanRegistry`...

    第六节课-Spring-是如何解决循环依赖的1

    2. **Singleton Bean Registry**:Spring的`DefaultSingletonBeanRegistry`类在处理bean实例化时,维护了一个`singletonObjects`缓存来存储已经完全初始化的bean,以及一个`earlySingletonObjects`缓存来存储那些...

    spring源码

    - Spring中的bean默认为单例模式,由`DefaultSingletonBeanRegistry`管理。源码中可以学习到如何实现线程安全的单例bean,以及通过`BeanFactory`的懒加载机制来处理延迟初始化。 3. **工厂方法与抽象工厂模式** -...

    struts2驱动包

    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean...

    Spring IOC设计原理解析.docx

    5. Spring的autowiring机制自动管理Bean之间的依赖,通过分析Bean名称或类型来匹配依赖,并利用`DefaultSingletonBeanRegistry`进行依赖注册。 总结: Spring的IOC设计原理涉及Bean的管理、依赖注入以及高级特性。...

    SPRING API 2.0.CHM

    All Classes ...AbstractApplicationContext ...DefaultSingletonBeanRegistry DefaultToStringStyler DefaultTransactionAttribute DefaultTransactionDefinition DefaultTransactionStatus DefaultValueStyler ...

    SpringIOC DI循环依赖实例详解

    SpringIOC DI 循环依赖实例详解 ...SpringIOC DI 循环依赖实例详解展示了 SpringIOC 中的循环依赖机制,展示了 DefaultSingletonBeanRegistry 的五个容器的作用,并且展示了 getSingleton() 方法中的循环依赖解决机制。

    解析Java的Spring框架的基本结构

    DefaultSingletonBeanRegistry和FactoryBeanRegistrySupport等辅助类负责具体的bean管理功能。 为了初始化DefaultListableBeanFactory,通常会使用XMLBeanDefinitionReader读取XML配置文件,并将其加载到bean工厂中...

    spring容器初始化遇到的死锁问题解决

    DefaultSingletonBeanRegistry.getSingleton() 方法需要对 singletonObjects 加锁,而在 afterPropertiesSet() 方法中开启的线程也需要获取 singletonObjects 对象锁,这样就出现了死锁。 解决方法是避免在 ...

    spring IOC源码 – 单实例bean的循环依赖 源码及过程

    缺少`Water`对象时,Spring调用`DefaultSingletonBeanRegistry`的`getSingleton(beanName, singletonFactory)`。在这里,Spring将`Water`添加到`singletonsCurrentlyInCreation`集合中,表示`Water`正在被创建。 4...

    spring源码12: spring创建Bean

    在上一节讲到,首先spring在AbstractBeanFactory类中创建了ObjectFactory的对象,并重写了getObject()方法,然后将他传给DefaultSingletonBeanRegistry。此时DefaultSingletonBeanRegistry调用了singletonFactory....

Global site tag (gtag.js) - Google Analytics