【发布时间】:2018-01-26 11:15:15
【问题描述】:
我是 Spring 新手,我正在创建一个 REST 服务。 我想知道服务层是做什么用的(@Service)。 目前我用那个层封装了我的 DAO。 例如,我的 PersonController 收到一个 PUT,调用 PersonService,后者调用 DAO,最终将这个人保存在我的数据库中。
我还看到了一些例子在 www. (https://howtodoinjava.com/spring/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/)
我也在这里读过这个问题:Is this a good Spring Architecture (include testing)
如果它只调用 DAO,我什至需要服务吗:
public void save(Person p) {
personDAO.save(p);
}
?
我真的不明白这样做有什么好处。我创建的类实际上什么都不做......或者它只是一个架构标准,因为额外的业务逻辑也将在这一层中?
另外...当我有几个服务,如 personService、familyService、animalService 等,并且它们都有一些相同的方法签名和一些不同的方法签名时......在这里使用接口有用吗?
当我创建以下接口时:可保存、可加载、可删除(这是否有意义?) - 我如何正确使用它们?我是否为每个扩展我想要的接口的服务创建一个新接口?像扩展 Loadable 和 Deleteable 的 PersonServiceInterface 并在我的 PersonService 中实现它?
提前致谢!
【问题讨论】:
-
使用极其简单的代码,您可以处理很多事情。然而,一旦你真正写出更真实的东西,你就会看到不同架构选择的优势。这可能更适合softwareengineering.stackexchange.com
-
谢谢。但实际上我正在创建一个 REST 服务,除了从数据库中读取/更新/删除之外,它实际上并没有做任何其他事情。我认为有实际的用例。 (例如社会管理)
-
好吧,没有人会强迫您编写您认为不必要的代码。一个简单的 CRUD 层不需要太多,可能有自动化工具可以创建一个,因此您甚至不需要编写样板文件。
标签: java spring spring-mvc