java - Spring架构问题: is Service needed?

标签 java spring spring-mvc

我是 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 等时,它们都有一些相同的方法签名,有些则不同...在这里使用接口(interface)有用吗?

当我创建如下接口(interface)时:Saveable、Loadable、Deleteable(这有意义吗?)——我该如何正确使用它们?我是否为每个扩展我想要的接口(interface)的服务创建一个新接口(interface)?就像扩展 Loadable 和 Deleteable 的 PersonServiceInterface 一样,我在我的 PersonService 中实现它?

提前致谢!

最佳答案

如果您觉得不需要服务层,那么您的 Controller 很可能正在执行比他们应该执行的更多的业务逻辑。

在两者之间添加一个服务层允许对纯前端进行专门测试( Controller 仅处理请求和响应连接/服务处理业务逻辑/存储库持久化并查询数据)。

所以经验法则 - 让许多服务处理您的逻辑片段比将所有内容都塞入您的 Controller 要容易得多

我不确定你试图用你引入的接口(interface)解决什么 - 我认为在你的服务之上重新发明 Repository 接口(interface)没有意义。如果您的服务只是直接转发到存储库,那么无论如何都没有用。

关于java - Spring架构问题: is Service needed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460252/

相关文章:

java - java中的二维数组列表

java - "Auth fail"在 jsch-0.1.42 与 Java 1.4.2

spring - 具有Spring-Boot/安全性的Null @AuthenticationPrincipal

java - 在 Spring 集成中将 XML 转换为 Java 对象的正确方法是什么?

javax.persistence.RollbackException : Transaction marked as rollbackOnly

java - Eclipse - 生成的文件未出现在项目文件夹中

Java - 最适合查找最频繁元素的数据结构

java - 如何修复 Spring Boot 不支持的请求方法 'POST'?

java - Spring MVC 3 JSON

java - Spring 3 + Tomcat 6 : Form validation exception - java. lang.NoSuchMethodError : javax. el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;