Java Spring服务是邪恶的吗,因为他们是单身人士?

时间:2014-11-03 17:51:40

标签: java spring design-patterns singleton

我已经阅读了一些关于网络和堆栈的讨论,声称单身人士是邪恶的。 喜欢: root-cause-of-singletonsWhy is Singleton considered an anti-pattern?

我读过像“单身人士使代码变得复杂,重用和测试的痛苦”之类的评论。 我使用Spring Services作为无状态单例的代码,我无法看到这些点是如何存在的。

此类服务是否也符合不良做法的原因?为什么?或者所有辩论都只针对有状态的单身人士?

3 个答案:

答案 0 :(得分:5)

你已经将Spring的单身人士(普遍好事)与 Singleton设计模式混淆了,后者会受到你所引用材料中所讨论的问题的困扰。

Singleton模式假设存在一个引用单例对象的static全局变量。它通常还假设有许多样板代码用于管理单例的生命周期(例如,懒惰地初始化它)。

Spring既不会让你实现Singleton模式,也不会在内部使用它。 Spring单例是以声明方式创建的,并连接成完整的对象图,包括循环依赖的解析。

答案 1 :(得分:3)

(评论为可读性的答案。)

单身人士本身并不邪恶,他们只是容易误用。

如果没有管理对象的单身,那么问题就更少了。

我不同意其他有关国家单身人士的观点;虽然它可以做错,但是有很多单例模式的状态可以很好地工作,例如池。

答案 2 :(得分:2)

Spring Singleton如果有状态则是邪恶的。一个无国籍的单身人士很好:

  • 没有字段,
  • 无状态字段(例如数据源),在启动时初始化。