`
newleague
  • 浏览: 1499552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

spring 中的singleton和ClassLoader中的单例

 
阅读更多

http://www.iteye.com/topic/718645

 

当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。

换言之,当把一个bean定义设置为singlton作用域时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。




请注意Spring的singleton bean概念与“四人帮”(GoF)模式一书中定义的Singleton模式是完全不同的。经典的GoF Singleton模式中所谓的对象范围是指在每一个ClassLoader中指定class创建的实例有且仅有一个。把Spring的singleton作用域描述成一个container对应一个bean实例最为贴切。亦即,假如在单个Spring容器内定义了某个指定class的bean,那么Spring容器将会创建一个且仅有一个由该bean定义指定的类实例。Singleton作用域是Spring中的缺省作用域

分享到:
评论

相关推荐

    简单了解spring bean作用域属性singleton和prototype的区别

    单例设计模式表示一个ClassLoader中只有一个class存在,而这里的singleton则表示一个容器对应一个Bean,也就是说当一个Bean被标识为singleton时候,spring的IOC容器中只会存在一个该Bean。 prototype作用域 与...

    详解Spring中bean的作用域

    Singleton 作用域和 GOF 设计模式中的单例是完全不同的,单例设计模式表示一个 ClassLoader 中只有一个 class 存在,而这里的 singleton 则表示一个容器对应一个 bean,也就是说当一个 bean 被标识为 singleton 时候...

    用enum实现单例模式的方法来读取配置文件

    在实际开发中,根据项目需求,还可以考虑使用Spring框架的`@ConfigurationProperties`注解来绑定配置文件,实现更强大的类型安全和属性映射功能。不过,对于简单的配置管理,枚举单例模式已经足够实用。

    Singleton 设计模式

    在现代编程实践中,特别是在使用容器(如 Spring、Guice)的情况下,Singleton 往往被推荐用依赖注入机制来代替,因为这可以提供更好的可测试性和可配置性。此外,对于资源管理,一些语言(如 Java 8)提供了内置的...

    浅谈spring中scope作用域

    singleton 作用域与 GOF 设计模式中的单例模式不同,singleton 作用域表示一个容器对应一个 bean,而不是一个 ClassLoader 中只有一个 class 存在。 配置实例: ```xml <bean id="role" class="spring.chapter2....

    Java程序员反馈的百度的笔试题.docx

    包括singleton(单例)、prototype(原型)、request(请求)、session(会话)、globalSession(全局会话)等,定义了Bean的生命周期和创建规则。 理解并熟练运用这些知识点,将有助于Java程序员在面试中表现出色...

    类加载机制与动态代理的测试题

    - 在`main`方法中获取单例对象并打印`value1`和`value2`的值。 综上所述,最终输出结果为: ``` value1=1 value2=1 ``` 这是因为`Singleton`对象在类加载时即已创建,构造函数被调用了一次,从而使得`value1`和`...

    高级Java经典面试题2019

    Spring IoC容器通过三种方式解决循环依赖问题:原型(Prototype)作用域、单例(Singleton)作用域以及构造器注入。 #### BeanFactory与ApplicationContext的区别 - **BeanFactory**:提供了基本的工厂接口,用于...

    Java面试题目和答案.pdf

    - 主要有Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader三种类型。 8. **HTTP协议**: - HTTP是用于传输超文本的协议,基于请求/响应模型。 - 支持多种请求方法如GET、POST等。 9. **Java的...

    day020-继承加强和设计模式代码和笔记.rar

    简单工厂模式:(了解)Spring框架中有用到 简单工厂模式:(后面可以用反射优化代码) 优点: 1.将生产和消费分离(解耦),即创建对象和使用对象的功能分离,便于管理 缺点: 1.扩展性弱,...

    java面试题和基础知识汇总超详细

    - **重写(Overriding)**:发生在父类和子类之间,子类中的方法覆盖父类中的方法。为了使方法能够被重写,父类中的方法必须声明为`public`、`protected`或者`default`,并且子类中的方法签名必须完全一致,包括返回...

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

    25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 ......................

Global site tag (gtag.js) - Google Analytics