<分区>
我在 web 和 stack 上阅读了一些声称单例是邪恶的讨论。 喜欢: root-cause-of-singletons 和 Why is Singleton considered an anti-pattern?
我读到诸如“单例使代码复杂,难以重用和测试”之类的评论。 我使用的代码具有无状态单例的 Spring 服务,我看不到这些点在这里如何成立。
此类服务是否也属于不良做法?为什么?或者所有的争论都只针对有状态的单例?
<分区>
我在 web 和 stack 上阅读了一些声称单例是邪恶的讨论。 喜欢: root-cause-of-singletons 和 Why is Singleton considered an anti-pattern?
我读到诸如“单例使代码复杂,难以重用和测试”之类的评论。 我使用的代码具有无状态单例的 Spring 服务,我看不到这些点在这里如何成立。
此类服务是否也属于不良做法?为什么?或者所有的争论都只针对有状态的单例?
最佳答案
您将 Spring 的单例(一个普遍的好东西)与 Singleton 设计模式混淆了,后者受到您在引用资料中讨论的问题的困扰。
单例模式假设存在一个引用单例对象的static
全局变量。它通常还假设有很多样板代码用于管理单例的生命周期(例如,延迟初始化它)。
Spring 既不让您实现单例模式,也不在内部使用它。 Spring 单例以声明方式创建,并连接在一起形成完整的对象图,包括循环依赖关系的解决。
关于java - Java Spring 服务是邪恶的,因为它们是单例的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719981/