我看到了很多关于单例设计模式的负面评论,但从我所了解的来看,Spring singleton并不是同一件事情,使用它是完全可以的。
然而,最近我开始怀疑我是否在新应用程序中过度使用了它。我的应用程序中几乎所有的类都是Spring singleton beans。这是一个Jersey web服务,其中有一些服务类会注入业务对象类(IoC),这些类包含所有的业务逻辑并与DAO类进行通信,DAO类也是由Spring注入的。
我认为,因为我可以轻松地使所有的类无状态,所以不存在线程安全问题,而且因为Spring缓存了类的实例,所以从性能上来说,这是一个合理的解决方案。
我后来看到了由第三方供应商开发的我们公司的一个应用程序,他们把所有的Spring beans定义为“singleton=false”,即使大部分bean没有状态。我开始想,这是否是Spring beans的最佳实践方法,如果我实际上过度使用了单例?
有没有人对最佳实践方面有任何评论?我应该尽可能使用Spring singleton还是应该避免使用?
然而,最近我开始怀疑我是否在新应用程序中过度使用了它。我的应用程序中几乎所有的类都是Spring singleton beans。这是一个Jersey web服务,其中有一些服务类会注入业务对象类(IoC),这些类包含所有的业务逻辑并与DAO类进行通信,DAO类也是由Spring注入的。
我认为,因为我可以轻松地使所有的类无状态,所以不存在线程安全问题,而且因为Spring缓存了类的实例,所以从性能上来说,这是一个合理的解决方案。
我后来看到了由第三方供应商开发的我们公司的一个应用程序,他们把所有的Spring beans定义为“singleton=false”,即使大部分bean没有状态。我开始想,这是否是Spring beans的最佳实践方法,如果我实际上过度使用了单例?
有没有人对最佳实践方面有任何评论?我应该尽可能使用Spring singleton还是应该避免使用?
singleton=false
会给配置文件读者带来误导。 - sparc_spread