一尘不染

Spring单例和Java单例(设计模式)有什么区别?

java

我正在学习Spring框架,目前正在阅读有关它的书。在这本书中,它说Spring单例与Java单例不同吗?这是什么意思,有什么区别?谢谢


阅读 500

收藏
2020-12-03

共1个答案

一尘不染

Java单例由Java类加载器确定范围,Spring单例由容器上下文确定范围。

从根本上讲,这意味着在Java中,可以确保单例仅在加载它的类加载器的上下文中才是真正的单例。尽管您在代码中尽力防止它发生,但其他类加载器也应该能够创建它的另一个实例(前提是这些类加载器不在同一类加载器层次结构中)。

在Spring中,如果您可以在两个不同的上下文中加载单例类,然后再次打破单例概念。

因此,总而言之,如果Java无法在给定的类加载器中创建该类的多个实例,则Java将其视为一个单例,而如果Java无法在给定的容器/中创建一个类的多个实例,则Spring将其视为一个单例。上下文。

2020-12-03