Spring bean singleton vs singleton pattern

时间:2015-12-16 12:36:00

标签: java spring

在Java编程中使用Spring bean来控制单例实例而不是使用单例模式创建类是否常见?

4 个答案:

答案 0 :(得分:4)

这取决于。如果你需要一个没有依赖关系且只提供一堆公共方法的实用程序类,我认为构建你自己的单例是快速而直接的。

但是如果你想构建一个需要注入其他依赖项的业务类,并且可能需要定义接口以避免类之间的耦合,我认为Spring(或其他DI框架)比(或其他DI框架)更好(更容易)建立自己的单身人士。

答案 1 :(得分:1)

这些是差异:

  1. JVM处理Singleton模式classś对象的生命周期,其中Spring上下文处理Spring单例bean的生命周期。

  2. 单个模式classś对象对于整个JVM是单一的,如果在同一个JVM中有多个SpringContext,则可以有多个对象。

答案 2 :(得分:1)

这取决于你解释Singleton模式的程度。

在我的解释中,Singleton暗示每个给定的上下文只有一个实例。上下文通常是JVM(实际上是ClassLoader),因为这是使用普通Java代码最容易实现的,但是没有什么能阻止我将模式映射到不同的上下文,其中一个是Spring的ApplicationContext。

根据这个定义,可以说“请求”和“会话”范围也包含单个对象,只是范围较窄。

另见this previous answer of mine,我将详细介绍。

答案 3 :(得分:0)

简单来说,当您使用spring bean单例时,每个spring容器将有一个实例。 但是,当您自己实现单例模式(在本例中为基于Java的设计模式)时,每个Java类加载器将只有一个实例。