单例模式在Spring容器级别维护实例,而单例设计模式在类加载器级别维护实例。
还有别的区别吗?
接下来,我仍然认为上面的原因不是一个有效的原因。事实上,一个应用程序上下文/容器只在一个类加载器中加载。因此,从技术上讲没有区别。是正确的还是我漏掉了什么?
参考:Singleton design pattern vs Singleton beans in Spring container
发布于 2013-06-13 22:51:14
好吧,真正的区别不在于类的加载,而在于设计原则。单例模式有其自身的局限性。它在全局范围内暴露了一个对象,同时也很难测试。但是,通过像Spring或Guice这样的依赖注入框架的单例是没有这些问题的。
这个SO thread可能会帮助你理解。以及Google-singleton-detector和Misko Hevery's blog也是很有趣的读物。
发布于 2013-06-13 22:46:09
使用“真正的”单例有更多的限制,因为您只能创建该类的单个实例(在类加载器中)。
如果您使用Spring singleton作用域的bean,则可以为该类创建任意数量的"singleton“实例(只要bean类不是真正的singleton)。
因此,从技术上讲,它们不是一回事。
发布于 2013-06-13 22:48:33
这主要是这两个名称的共同之处。单例模式确保一个类只有一个实例,而Spring的单例bean作用域只是指示容器在依赖注入期间使用bean的单个实例,而bean可以是任何没有限制的类。
https://stackoverflow.com/questions/17089850
复制相似问题