我的应用程序中有一个单例服务。我的应用程序由于使用了spring框架而变得臃肿。
我对使用单例服务感到困惑。
1:需要时静态访问它们的普通旧单例
或者作为一个
2: Spring单例bean。在需要时使用DI注入
哪种方法是正确的?
发布于 2010-10-13 12:21:39
Spring singleton作用域与Singleton设计模式不同,后者与具有静态方法的类不同。
从文档中
此外,请注意,您需要非常小心地将Spring singleton用作web请求将利用的服务。因为每个请求都在它自己的线程上,所以如果你的单例维护任何状态,你可能会有线程问题。
回答您的问题:创建一个实现接口的类,并使用Spring对其进行适当的DI。如果您的服务不维护状态,您可以将其范围限定为singleton,否则可以将其范围限定为prototype。
发布于 2010-10-13 12:33:35
只要有可能,我就会使用Spring的bean。这个框架就是为管理这些东西而设计的,它在这方面可能比我做得更好。使用Spring依赖注入的另一个原因是可以使用模拟而不是真正的实用代码进行单元测试,从而将单元测试集中在确切的范围内。
编辑:为了回答注释中的问题,对于非bean单例,我能想到的唯一情况是实用程序代码类,它将在公共静态方法中包含通常可重用的简短代码。其他任何东西都需要实例化,因此需要一个bean。
https://stackoverflow.com/questions/3920689
复制相似问题