在我们的Web应用程序中,我们使用Spring作为依赖注入机制。我们有多个DAO和Manager spring bean,默认范围是singleton.We确保所有这些bean都是无状态的。我已经在多个地方阅读过为什么单身模式不好:What is so bad about singletons?。如果已经提出这个问题,请给我。如果上面提到的设计是在糟糕的编码实践中,请回答,以及如何对其进行改进。
答案 0 :(得分:3)
正如您在发布的第一个回复中看到的那样(what is so bad about singleton)单身的三个问题:
如果您通过弹簧依赖注入使用单例,则它们都不存在,因为:
所以使用春天单身人士是一个非常好的解决方案,没有真正的单身人士的问题。
答案 1 :(得分:2)
Spring单例bean没有使用单例模式。它们恰好被框架实例化一次,并注入到需要它们的每个组件中。
单例模式被认为是一种反模式,主要是因为它使所有依赖它的类很难测试。 Spring singleton bean根本没有这个问题。
答案 2 :(得分:1)
单例的主要缺点是,如果它们具有任何状态,它们往往会导致不同客户端类之间的纠缠。精心设计的服务类不应该具有任何特定于操作的状态(它们通常具有类似于对数据库池或其他资源的引用,在实例化时注入,然后在之后不会更改),并且它完美无缺很好地使用单例范围的bean来提供这样的服务。
答案 3 :(得分:1)
如果您从已关联的问题中读取答案,则它们并不真正适用于Spring
单身人士。在单例范围内使用Spring bean时,他们 难以测试,他们不控制他们自己的创建,他们 通过界面(或至少应该!)。