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