【发布时间】:2022-02-06 19:39:02
【问题描述】:
在一个规范的 Spring MVC 实现中,架构是这样的
+--controller
| |
| +--MyController (@Controller, calling MyService)
|
+--service
| |
| +--MyService (interface)
| +--MyServiceImpl (@Service, calls MyDAO)
|
+--dao
| |
| +--MyDAO (interface)
| +--MyDAOImpl (@Repository, MyEntity CRUD)
|
+--entity
|
+--MyEntity (@Entity, corresponding to my_table in DB)
我的问题很简单:@Service 的使用对调用层次结构有何贡献?我见过的大多数服务类都只是封装了 DAO 中的方法。
例如:
@Transactional
public List<Entity> getEntities() {
return entityDAO.getEntities();
}
@Transactional
public void saveEntity(Entity val) {
entityDAO.saveEntity(val);
}
为什么不绕过它直接从@Controller 调用DAO?
相关:Is it bad practice that a controller calls a repository instead of a service?(在任何框架之外更抽象地制定)
【问题讨论】:
标签: spring spring-mvc dao