EeE*_*EeE 1 java architecture spring
这是Dao层和服务层之间的设计问题:
在DAO层中,有DAO类叫做:Dao1,Dao2,Dao3 ......
在服务层中,有一些服务类叫做:Service1,Service2,Service3 ......
Service1需要注入Dao1,Dao2,Dao3
Service2需要注入Dao2,Dao3,Dao4
Service3需要注入Dao3
...
创建用户的示例:
UserService需要注入UserDao来创建用户,同时UserService需要注入LogDao来记录系统日志信息.
似乎我们需要做一些重复的工作.在实践中有任何解决方案吗?我正在使用Spring框架.使用@Resource注释在服务类中注入这些Dao.
我的解决方案是:将所有Dao类(Dao1,Dao2,Dao3 ......)注入DaoCollection类,然后将service1,service2,service3 ...全部扩展到DaoCollection类.这是好方法吗?
谢谢
您必须定义服务使用的DAO,因此您必须在某种程度上"重复"工作.
根据您使用的框架(如果有),该声明不应过多开销(键入).
EJB 3+中的示例:
class Service1 {
@EJB private DAO1 dao1;
@EJB private DAO2 dao2;
@EJB private DAO3 dao3;
...
}
Run Code Online (Sandbox Code Playgroud)
我会说你不应该创建一个共同的超类并在那里注入所有可能的DAO.这很可能会让人更难理解(为什么那些DAO在那里?,它们是否被使用?等)甚至可能存在性能问题,具体取决于使用的框架(您可以将每个DAO注入每个服务,从而创建一大堆未使用的DAO实例).
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |