`
嵇海波
  • 浏览: 13400 次
  • 性别: 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();

分享到:
评论

相关推荐

    containerx:Spring的初学者掌握其核心原理

    键是bean的名称,值就是那个单例bean。有没有感觉豁然开朗?这样可以实现带依赖注入功能的容器。 InvocationHandler,还有Proxy.newProxyInstance()...灵光一闪,是不是有实现AOP的思路了?实现的功能sette

    Spring面试题

    因为 org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以针对各种底层存储方法实现。最常用的 BeanFactory 定义是 XmlBeanFactory,它根据 XML 文件中的定义装入 bean,如清单 1 所示。 清单...

    2023年最新java面试大全

    【02期】你能说说Spring框架中Bean的生命周期吗? 【03期】如何决定使用 HashMap 还是 TreeMap? 【04期】分库分表之后,id 主键如何处理? 【05期】消息队列中,如何保证消息的顺序性? 【06期】单例模式有几种...

    Java求职面试宝典各大公司常考知识点

    1.1. Hibernate工作原理 2 1.2. 什么是Hibernate的并发机制?怎么处理并发问题? 2 1.3. Hibernate自带的分页机制是什么?如果不使用Hibernate自带的分页,则采用什么方式分页? 3 1.4. hibernate的对象的三种持久化...

    java面试题

    73.8. transaction有那几种实现(事务处理)(Spring) 79 73.9. Spring IoC 79 73.10. Spring AOP面向方面编程 82 74. 项目中为什么使用SSH 85 75. Spring在SSH中的作用 86 76. weblogic 86 76.1. 如何给weblogic指定...

    java面试题库2021.pdf

    ①IoC 与 Bean 配置、 管理 ②AOP 与事务、 权限控制 ③S2SH 整合开发 ④Spring, JPA 整合 2、 Hibernate ①ORM 与持久化映射 ②延迟加载、 性能优化 ③HQL 查询、 条件查询、 SQL 查询 ④二级缓存与查询缓存 3、 ...

    Java学习笔记-个人整理的

    {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{subsection.1.4.2} {1.4.3}\texttt {char}}{24}{subsection.1.4.3} {1.4.4}转义字符}{25}{subsection.1.4.4} {1.4.5}Boolean ...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics