从设计的角度来看,有一个从 spring 上下文返回单例的全局对象有什么问题吗?
我刚开始在一个新地方工作,所有 DAO 都通过一个名为 DAOUtils 的全局对象访问,其中每个 DAO 从 spring 上下文中获取单例 DAO bean。因此,例如,如果您想保存采购订单,您会说
DAOUtils.getPurchaseOrderDao().savePurchaseOrder(po);
或类似的东西。
我已经习惯于根据需要将 DAO 注入到每个需要它们的类中,所以这让我有点震惊。从设计的角度来看,它有什么问题吗?如果有,你能解释一下为什么这是一个坏主意吗?
我可以看到它使单元测试变得困难,因为没有办法阻止代码调用实际的 DAOUtils 类..?我想这可以描述为紧耦合引起的问题?