【问题标题】:Spring bean singleton and singleton pattern [duplicate]Spring bean单例和单例模式[重复]
【发布时间】:2017-11-28 01:20:14
【问题描述】:

我知道 Spring 可以创建单例 bean。这是否意味着我们不需要自己使用“单例模式”来创建 java bean?那么spring单例模式和单例模式有什么区别呢?

【问题讨论】:

    标签: java spring


    【解决方案1】:

    Spring 单例是唯一的 ApplicationContext(每个 Spring 容器)实例。这意味着如果你创建一个新的ApplicationContext,那么即使它是单例的,你也会得到一个新的 bean 实例。

    然而,原始 Java 单例意味着每个 Classloader 一个实例。这意味着对于特定的类加载器,单例实例保持不变。在大多数情况下这很好,但是假设如果您需要一个真正的单例,每个 JVM 的单个实例,那么还有一些额外的工作要做。看这个例子https://stackoverflow.com/a/47445573/5343269

    您的问题的答案是,如果您在应用程序中实例化单个弹簧容器,那么弹簧单例 bean 可以被视为单例,但这只适用于 Spring 组件。这意味着任何非 Spring bean 的类都无法访问此实例。

    为了安全起见,不要依赖 spring 单例并创建自己的单例类。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多