【问题标题】:Call service from Repository in spring boot在 Spring Boot 中从 Repository 调用服务
【发布时间】:2015-06-09 15:03:18
【问题描述】:

我是 Spring Boot 的新手,我已经看到了我们创建存储库以使用给定对象执行各种操作的示例。这是示例

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {

    List<Person> findByLastName(@Param("name") String name);

}

如果我发送 People jason 来自其他客户端

http://localhost:8080/people{ .... }

它插入数据库,内部调用save方法。

这里从 REST 客户端调用后,我想做一些验证或业务登录,然后插入数据库,我该怎么做?这意味着我想调用一个服务方法来完成所有业务逻辑,然后插入,那么我如何从存储库类调用服务方法?

【问题讨论】:

  • 我能知道投反对票的原因吗?
  • 这个问题不清楚。为什么要从存储库类中调用服务方法。 “存储库”类旨在完成与数据库相关的工作,并且无论如何拥有服务方法与“Spring-Boot”无关。创建服务类以执行业务逻辑,然后调用存储库以执行数据库相关操作。
  • 所以我不能以这种模式编写任何业务逻辑,我必须调用服务层,然后我需要从那里调用存储库.. 对吗?
  • 是的。您需要添加一个服务类来执行业务逻辑,并在该类中注入您的存储库引用,您可以使用它来调用存储库方法。
  • 所以在这种情况下,将“@RepositoryRestResource”注释添加到 Repository 类没有任何意义,因为我们不是从 REST 调用 respository 类,我们必须调用服务,然后服务使用自动装配的对象来调用存储库.我说的对吗?

标签: spring rest spring-mvc spring-boot


【解决方案1】:

此存储库是一个接口,将允许您执行涉及 Person 对象的各种操作(这里操作是指与数据库相关的操作)。它通过扩展 Spring Data Commons 中定义的 PagingAndSortingRepositry 接口来获取这些操作。

在运行时,Spring Data REST 会自动创建这个接口的实现。然后它将使用@RepositoryRestResource 注解来指示Spring MVC 在/people 创建RESTful 端点。

我认为在存储库中添加“@RepositoryRestResource”无法满足您的要求。您可能希望创建一个适当的 sprint-boot 应用程序,其中包含 api、服务和 repo 层来执行您想要执行的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2021-11-28
    • 1970-01-01
    • 2022-12-01
    • 2021-04-05
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多