从设计的角度来看,有一个全局对象从spring上下文返回单例,这有什么问题吗?
我刚刚在一个新地方开始工作,并且所有DAO都通过称为DAOUtils的全局对象进行访问,其中每个DAO都从spring上下文中获取单例DAO bean。因此,例如,如果您想保存采购订单,您会说
DAOUtils.getPurchaseOrderDao()。savePurchaseOrder(po);
或类似的东西。
我习惯于将DAO视需要注入每个需要它们的类中,因此这让我有些震惊。从设计的角度来看,这有什么问题吗?如果是的话,您能解释一下为什么这是一个坏主意吗?
我可以看到,这使单元测试变得困难,因为无法阻止代码调用实际的DAOUtils类。我猜这可以说是紧密耦合引起的问题吗?
最佳答案
这是错误的设计模式,因为您无法用其他方法代替DAOUtils。用于测试目的。
Spring使用依赖注入,这是检索DAO实例的最佳方法。