返回春季单身人士的全球对象

时间:2013-05-04 08:22:34

标签: java spring

从设计的角度来看,有一个从弹簧上下文返回单例的全局对象有什么不对吗?

我刚开始在一个新的地方工作,DAO都是通过一个名为DAOUtils的全局对象访问的,其中每个DAO都从spring上下文中获取单例DAO bean。因此,如果您想保存采购订单,例如,您可以说

DAOUtils.getPurchaseOrderDao()savePurchaseOrder(PO);

或类似的东西。

我已经习惯按需要将DAO注入到需要它们的每个类中,所以这让我感到震惊。从设计的角度来看,它有什么问题,如果是这样,你能解释为什么这是一个坏主意吗?

我可以看到它使单元测试变得困难,因为没有办法阻止代码调用实际的DAOUtils类..?我想这可以被描述为由紧耦合引起的问题?

1 个答案:

答案 0 :(得分:4)

这是糟糕的设计模式,因为你无法用其他东西代替DAOUtils,例如用于测试目的。

Spring使用依赖注入,这是检索DAO实例的最佳方法。