1

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

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

DAOUtils.getPurchaseOrderDao().savePurchaseOrder(po);

或类似的东西。

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

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

4

1 回答 1

4

这是一种糟糕的设计模式,因为您不能用其他东西代替 DAOUtils,例如用于测试目的。

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

于 2013-05-04T08:24:44.833 回答