问题描述
我正在尝试为 Spring boot 项目设置一个 DAO 层,为此 我遇到了这个helpful blog。
我需要对下面的文本进行一些澄清,尤其是它说依赖项不能是实现类并且它们不需要超出其域的部分。
"所有 DAO 类都必须通过注入它们的依赖项 实例化,不晚于运行时,和依赖项不能 实现类。 DAO 层必须确保最少的 依赖 DAO 类需要不超过其域,即所有 依赖应该是与持久层相关的接口或 仅限其他 DAO 接口。”
我们应该注入接口作为 服务类中的依赖项而不是自动连接具体 持久层实现类。
解决方法
你不注入接口,你的服务类依赖于 DAO 接口(但没有看到实现)。您在运行时注入 dao 接口的实现。因此,实现也将依赖于 dao 接口。
这个想法是(理论上)您可以更换您的底层实现 - 从文件系统迁移到关系数据库,再到文档数据库,您的服务不会受到影响。