这里有一个Dao层和Service层之间的设计问题:
在DAO层,有DAO Classes调用: 道 1、道 2、道 3 ...
在服务层,有服务类称为: 服务 1、服务 2、服务 3 ...
Service1需要注入(inject)Dao1、Dao2、Dao3
Service2需要注入(inject)Dao2、Dao3、Dao4
Service3需要注入(inject)Dao3
...
创建用户的例子:
UserService需要注入(inject)UserDao来创建用户,UserService也需要注入(inject)LogDao 记录系统日志信息。
看来我们需要做一些重复的工作。实践中有解决办法吗?我 我正在使用 Spring 框架。使用@Resource 注解将这些 Dao 注入(inject)到服务类中。
我的解决方案是: 将所有 Dao 类(Dao1、Dao2、Dao3 ...)注入(inject)到 DaoCollection 类中,然后是 service1、service2、service3...都扩展了 DaoCollection 类。这是好方法吗?
谢谢
最佳答案
无论如何,您都必须定义您的服务使用的 DAO,因此您必须在某种程度上进行“重复”工作。
根据您使用的框架(如果有的话),该声明不应有太多开销(输入)。
EJB 3+ 中的示例:
class Service1 {
@EJB private DAO1 dao1;
@EJB private DAO2 dao2;
@EJB private DAO3 dao3;
...
}
我会说你不应该创建一个公共(public)父类(super class)并在那里注入(inject)所有可能的 DAO。这很可能会使它更难理解(为什么那些 DAO 在那里?它们被使用了吗?等等),甚至可能会出现性能问题,具体取决于所使用的框架(您可能将每个 DAO 注入(inject)到每个服务中,从而创建一大堆未使用的 DAO 实例)。
关于java - 服务层在实践中注入(inject)多个DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960043/