在Java编程中使用Spring bean来控制单例实例而不是使用单例模式创建类是否常见?
答案 0 :(得分:4)
这取决于。如果你需要一个没有依赖关系且只提供一堆公共方法的实用程序类,我认为构建你自己的单例是快速而直接的。
但是如果你想构建一个需要注入其他依赖项的业务类,并且可能需要定义接口以避免类之间的耦合,我认为Spring(或其他DI框架)比(或其他DI框架)更好(更容易)建立自己的单身人士。
答案 1 :(得分:1)
这些是差异:
JVM处理Singleton模式classś对象的生命周期,其中Spring上下文处理Spring单例bean的生命周期。
单个模式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类加载器将只有一个实例。