2012-07-02 66 views
4

正如this帖子中讨论的,它是不适合在(因为在不同的JVM中的多个单一对象的)集群环境中使用单,这必须是由Spring框架创建单身真。春辛格尔顿集群环境

如果这是正确的,那么我们必须非常小心使用Spring框架来使用单例类。你能否告诉我这是否正确理解?

回答

6

这不一定是这种情况。

如果在单独的JVM上使用单身人士,如果他们的分享了有意义的状态,则会出现问题。例如,如果两个单独的实例存在于同一应用程序的两个单独的应用程序服务器上,则存储和发布增量ID的单例将非常危险。

在Spring中并没有什么内在的东西可以解决这个问题。你的Spring bean(可能是服务)的目标应该是尽可能保持良好的实践状态。如果他们需要共享状态,那么您将不得不像解决任何其他共享状态一样解决此问题。

很多人在集群环境中使用Spring,并没有遇到与上述相关的任何问题。我就是其中之一!

+0

这是一个旧的答案,但线程安全性如何。比方说,我有一个服务代码中的关键部分,由服务类中的锁保护(锁对象是一个实例字段)。多个实例会有单独的锁尝试使用相同的资源导致争用。我对么? 任何想法,如何处理? –