我已经阅读了很多关于Singleton设计模式的不好的事情,但是从我收集的内容来看,Spring singleton并不是一回事,使用它是完全没问题的。
但是最近我开始想知道我是否在我正在开发的新应用程序中过度使用它。我在这个应用程序中的几乎所有类都是Spring单例bean。这是一个Jersey Web服务,几乎没有服务类可以注入业务对象类(IoC),它包含所有业务逻辑并与DAO类进行通信,这些类也是由Spring注入的。
我认为这是因为我可以轻松地使所有类无状态,因此没有线程安全问题,并且因为Spring具有缓存类的实例,性能方面这将是合理的解决方案。
我已经看到第三方供应商为我公司开发的应用程序,它是软件公司,他们将所有的Spring bean定义为“singleton = false”,即使他们中的大多数都没有任何状态。我开始想知道,对于Spring bean来说,这是一种最佳实践方法,如果我实际上过度使用单身人士了吗?
有人会就最佳做法对此事发表任何意见吗?每当我可以或者我应该离开时,我应该使用Spring单身吗?
答案 0 :(得分:5)
你的方法很好。单例的常见问题(除了全局可变状态,听起来这不是问题)是单例管理它自己的单一(意味着像静态getInstance方法),使得它很难测试。在春天,通过让工厂控制单身人士的范围来处理。
单身人士的另一个棘手方面是如何从任何地方调用任何东西。您可以采用规范的分层方法来处理这个问题。