`
嵇海波
  • 浏览: 14039 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

spring单例bean实现原理

 
阅读更多

Spring 默认实例bean都是单例的  其中单例的实现原理:

定义一个final的ConcurrentHashMap对象,从而该域是线程安全的

privatefinal Map<String, Object> singletonObjectsnew ConcurrentHashMap<String, Object>(64);

其中获取单例的代码放置在同步块中,

protected Object getSingleton(String beanName, boolean allowEarlyReference) {

Object singletonObject = this.singletonObjects.get(beanName);

if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {

synchronized (this.singletonObjects) {

singletonObject = this.earlySingletonObjects.get(beanName);

if (singletonObject == null && allowEarlyReference) {

ObjectFactory singletonFactory = this.singletonFactories.get(beanName);

if (singletonFactory != null) {

singletonObject = singletonFactory.getObject();

this.earlySingletonObjects.put(beanName, singletonObject);

this.singletonFactories.remove(beanName);

}

}

}

}

return (singletonObject != NULL_OBJECT ? singletonObject : null);

 

}

 

获取ClassLoader :Thread.currentThread().getContextClassLoader();

分享到:
评论

相关推荐

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    Spring2.5视频教程_编码剖析Spring管理Bean的原理

    《Spring2.5视频教程:编码剖析Spring管理Bean的原理》是由知名教育机构黑马程序员的讲师黎活明主讲的一套教程,旨在深入解析Spring框架2.5版本中Bean的管理机制。本教程通过实际编码演示,帮助学习者理解Spring如何...

    对Spring中注解怎么实现的一些基本原理

    此外,`@Scope`注解用于设置Bean的作用域,如单例(singleton)或原型(prototype)。 6. **AOP代理**:Spring的面向切面编程(AOP)可以通过注解实现,如`@Aspect`定义一个切面,`@Before`、`@After`、`@Around`等...

    Spring的bean生命周期

    Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及工厂周期。 首先,让我们从Bean生命周期开始。在Spring中,Bean的生命周期包括以下几...

    这一次搞懂Spring的XML解析原理说明

    5. **预初始化单例bean**:在容器完全初始化之前,预创建所有的单例bean,但不执行任何依赖注入。 6. **初始化消息源**:处理国际化信息,如果配置了`MessageSource`。 7. **完成bean的实例化和依赖注入**:这一步...

    Spring源码学习六:bean初始化1

    在Spring框架中,Bean的初始化是其生命周期中的关键步骤,特别是在单例模式下,Spring容器会确保在应用程序启动时创建并初始化所有非延迟加载的单例Bean。在本篇文章中,我们将深入探讨Spring源码中关于Bean初始化的...

    Spring Bean 加载顺序 .

    在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。这个过程涉及到Bean定义的解析、实例化、初始化等多个步骤。让我们详细探讨Spring Bean加载顺序的各个...

    spring ioc和aop原理流程图(详细)

    4. **Bean的作用域**:Spring提供了多种Bean的作用域,如单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,根据不同的需求选择合适的Bean作用域。 5. **Bean的生命周期**:Spring容器对...

    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc

    Spring 框架系列(8)- Spring IOC 实现原理详解之 Bean 实例化(生命周期、循环依赖等) 本文主要研究 Spring 框架中 Bean 的实例化过程,包括 Bean 的生命周期和循环依赖问题的解决方案。在 Spring 框架中,Bean ...

    Spring框架的设计原理及设计模式分析 2

    - **单例模式**:Spring默认将Bean作为单例管理。 - **模板方法模式**:如`JdbcTemplate`等类提供了数据库操作的模板方法。 #### 七、结论 Spring框架通过其强大的核心组件和设计理念,极大地方便了Java开发者进行...

    spring自动扫描和管理Bean的示例

    总结起来,Spring的自动扫描和管理Bean功能是通过组件扫描和注解驱动配置实现的,这大大减少了手动配置的繁琐工作,提高了开发效率。了解并熟练掌握这些概念对于任何Spring开发者来说都是至关重要的。

    【Spring】总结Spring整合Mybatis的底层原理实现步骤

    本文主要探讨Spring整合Mybatis的底层原理和实现步骤,结合鲁班学院公开课笔记,深入理解这一过程。 首先,Dao层是数据访问层,它提供了Service层调用的接口,有时甚至可以作为一个独立的项目。在Spring整合Mybatis...

    模拟spring工厂模式底层实现。

    7. **单例Bean的缓存**:对于单例模式的Bean,Spring会将其缓存,后续请求相同Bean时,直接返回缓存的实例,避免重复创建。 8. **生命周期管理**:Spring提供了多种生命周期接口,如InitializingBean、...

    spring第二天.pdf

    可以从BeanDefinition的注册流程、Bean实例创建流程以及依赖注入的实现入手,逐步分析Spring框架的内部工作原理。 通过这些知识点的学习,不仅可以了解Spring框架的基本构造,还能提升解决实际问题的能力,比如优化...

    Java-spring框架面试题

    在本篇文章中,我们将详细讨论Java-Spring框架中的一些重要知识点,包括单例bean的线程安全性、AOP的应用、事务的实现、事务失效的场景、bean的生命周期、循环依赖等。 单例bean的线程安全性 在Spring框架中,单例...

    Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计.doc

    在实现原理上,Spring通过解析XML或注解配置来构建BeanDefinition对象,然后根据BeanDefinition创建Bean实例。在处理依赖关系时,Spring使用了依赖注入(DI)的概念,它可以是设值注入(setter-based injection)...

    Spring技术内幕:深入解析Spring架构与设计原理

    7. **源码分析**:本书的一大亮点是对Spring源码的深入剖析,帮助读者理解Spring的设计模式和实现技巧,如单例模式、工厂模式、代理模式等。 通过阅读本书,开发者不仅可以提升Spring技能,还能深入理解软件设计...

    手写SpringIoc的XML实现方式

    对于单例bean,我们可以在容器启动时预先实例化;对于原型bean,每次请求时才创建新的实例。 最后,我们需要实现bean的依赖注入。在所有bean实例化之后,遍历bean注册表,检查每个bean的依赖列表,并使用反射进行...

    【框架源码篇 04】Spring源码手写篇-Bean定义配置化

    Spring源码手写篇旨在帮助开发者理解Spring内部的工作原理,通过模仿Spring的核心功能,如Bean工厂和Bean定义,我们可以更好地掌握Spring框架的精髓。04-手写Bean配置-spring-v41.rar可能包含了一个简单的实现,你...

Global site tag (gtag.js) - Google Analytics