在我们的 Web 应用程序中,我们使用 Spring 作为依赖注入(inject)机制。我们有多个 DAO 和默认范围为单例的 Manager spring bean。我们确保所有这些 bean 都是无状态的。我在多个地方读过为什么单例模式不好:What is so bad about singletons? .如果已经有人问过这个问题,请原谅我,但请回答上述设计是否受到不良编码实践的影响,以及如何对其进行改进。
最佳答案
正如您在对您发布的链接 (what is so bad about singleton) 的第一个回复中看到的那样,单例的三个问题是:
- 在代码中隐藏应用的依赖
- 违反单一责任原则
- 代码强耦合
如果您通过 spring 依赖注入(inject)使用单例,则它们都不存在,因为:
- 依赖存储在配置文件中,而不是代码中
- 单一责任原则并没有被打破,因为你的dao的构造是由spring引擎处理的,而不是你的dao
- 代码不是强耦合的,因为可以在不更改代码的情况下更改配置
所以是的,使用 spring 单例可以是一个非常好的解决方案,没有真正的单例问题。
关于java - 我们应该为 DAO 使用 spring 单例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693097/