繁体   English   中英

Spring Singleton与Singleton设计模式-类加载器

[英]Spring Singleton Vs Singleton Design pattern - Class Loader

Singleton Pattern将实例维护在Spring容器级别,而Singleton Design Pattern将实例维护在Class Loader级别。

还有其他区别吗?

接下来,我仍然认为上述原因并非有效原因。 事实上,一个应用程序上下文/容器仅被加载到一个类加载器中。 因此在技术上没有区别。 是正确的,还是我缺少了什么?

参考: Singleton设计模式与Spring容器中的Singleton bean

好吧,真正的区别不在于类加载,而在于设计原理。 单例模式有其自身的局限性。 它在全局范围内公开对象,并且很难测试。 但是,通过像Spring或Guice这样的DI框架进行单例操作不会遇到这些问题。

SO线程可以帮助您理解。 以及Google-singleton-detectorMisko Hevery的博客也很有趣。

从某种意义上说,使用“真实”单身人士的局限性更大,因为这样一来,您必然只能创建该类的单个实例(在类加载器中)。

如果使用Spring单例作用域的bean,则可以创建该类的任意多个“单例”实例(只要bean类不是真正的单例)。

因此,从技术上讲它们不是同一回事。

这主要是这两个名称的共同点。 Singleton模式可确保一个类只有一个实例,而Spring的singleton bean范围仅指示容器在依赖项注入期间使用bean的单个实例,而bean可以是不受限制的任何类。

弹簧单例确保只要使用spring框架创建对象,就只能创建该对象的一个​​实例。 相反,实现单例模式可确保仅存在该对象的一个​​实例。

我已经看到了在弹簧配置中将对象定义为单例的代码。 单例对象有时是使用spring DI创建的,有时是使用new运算符创建的。

因此,需要谨慎行事,以确保不进行此类滥用,并保持单一实例的单一实例。

在每个类加载器级别描述单例模式。 单例bean范围是每个spring容器。

http://www.javabench.in/2012/04/difference-between-singleton-design.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM