java我们应该为DAO使用spring单例吗
在我们的web应用程序中,我们使用Spring作为依赖项注入机制。我们有多个DAO和Manager SpringBean,它们的默认作用域是singleton。我们已经确保所有这些bean都是无状态的。我在多个地方读过为什么单例模式不好:What is so bad about singletons?。如果已经有人问过,请原谅我,但如果上述设计属于糟糕的编码实践,请回答,以及如何对其进行改进
你可以在下面搜索框中键入要查询的问题!
在我们的web应用程序中,我们使用Spring作为依赖项注入机制。我们有多个DAO和Manager SpringBean,它们的默认作用域是singleton。我们已经确保所有这些bean都是无状态的。我在多个地方读过为什么单例模式不好:What is so bad about singletons?。如果已经有人问过,请原谅我,但如果上述设计属于糟糕的编码实践,请回答,以及如何对其进行改进
# 1 楼答案
正如您在对您发布的链接(what is so bad about singleton)的第一次回复中所看到的那样,singleton的三个问题是:
如果通过spring依赖项注入使用singleton,则它们都不存在,因为:
因此,使用spring单例是一个非常好的解决方案,不会出现真正的单例问题
# 2 楼答案
如果你阅读了你链接的问题的答案,它们实际上并不适用于
Spring
单例。在单例范围内使用SpringBean时,它们不难测试,它们不控制自己的创建,并且它们通过接口访问(或者至少应该是这样!)# 3 楼答案
Spring单例bean没有使用单例模式。它们恰好被框架实例化一次,然后注入到每个需要它们的组件中
单例模式被认为是一种反模式,主要是因为它使得依赖它的所有类都难以测试。SpringSingleton bean根本没有这个问题
# 4 楼答案
单例的主要缺点是,如果它们有任何状态,它们往往会在不同的客户机类之间引起纠缠。设计良好的服务类不应该具有任何特定于操作的状态(它们通常具有对数据库池或其他资源的引用,在实例化时注入,然后在实例化后不进行更改),对于此类服务使用单例范围的bean是完全可以的