当前位置: 首页 > 知识库问答 >
问题:

用Spring从控制器层调用存储库和服务

邵博艺
2023-03-14

我使用Spring Boot和Spring数据。

我认为把存储库层和服务层分开是没有问题的

    null
    null

在我的控制器中,我必须从UserService调用方法,有时还必须从UserRepository调用方法。目前,我将两者都注入到控制器中,并调用service或repository

@Inject
UserService userService;

@Inject
UserRepository userRepository;

@RequestMapping("{username}")
private void myMethod(@PathVariable String username){
    return userRepository.findOne(username);
}

@RequestMapping("{username}/doBusineesAction")
private void myMethod(@PathVariable String username){
    return userService.doLogicalThin(username);
}

我只是问,因为我混淆了在同一个类中注入两者和调用其中一个或另一个

另一方面,这意味着在服务层重复方法,如下所示

public User findOne(String username){
 return userRepository.findOne(username);
}

你的意见呢?

共有1个答案

丁经国
2023-03-14

控制器层不应该直接调用存储库。您应该始终使用服务层,因为服务层封装了围绕该调用的业务逻辑。仅仅因为目前没有任何业务逻辑,并不意味着您应该完全跳过这一层。

 类似资料:
  • 作为Springboot的新手,我看到了一个例子,我们创建存储库来对给定的Object执行各种操作。这是样品一 所以从其他客户那里,如果我派人杰森 http://localhost:8080/people{....} 它插入到数据库中,在内部调用 save 方法。 在这里,从REST客户端调用后,我想进行一些验证或业务登录,然后插入到数据库,我该怎么做?这意味着我想调用一个服务方法来完成所有的业务

  • 我遵循控制器、服务和存储库模式,我只是想知道DTO在哪里。 控制器是否应仅接收DTO?我的理解是你不想让外界知道底层域模型? 从域模型到DTO的转换应该发生在控制器层还是服务层?

  • 我是新来的Spring应用程序。我试图创建小Spring应用程序,但我得到404错误消息。似乎控制器(indexController)没有开始调用。我累了调试,但它不在那里。 文件位置: /WebContent/WEB-INF/pages/index.html /WebContent/WEB-INF/HelloWebServlet。xml /WebContent/WEB-INF/web.xml H

  • 我在SAP HANA中定义了一个存储过程,其中包含3个in参数,返回一个记录集。当我用语法调用它时,它在HANA studio中运行得非常好。 现在我需要从微软SQL服务器调用它(我在2016年)。我有一个与HANA服务器的远程链接服务器连接,当使用和语法查询表和视图时,它可以正常工作。 我尽力了,但找不到调用远程过程的方法。“CALL sp_name(p,p,p)”语法返回“对象没有列或当前用户

  • 问题内容: 我正在使用socket.io在我的应用中启用聊天功能,并且正在使用一项服务来执行所有套接字操作。当出现消息时,我想从服务中触发控制器的功能以在UI中进行一些更改。所以我想知道如何从服务访问控制器的功能。样例代码: 这是服务的示例代码。 现在控制器的代码 问题答案: 您可以通过使用角度事件或来实现此目的。 在您的情况下会有所帮助,您需要广播事件,以便具有相同事件名称的所有子作用域都可以监

  • 我试图在Spring boot 2中编写一个测试类,其中: 我想测试一个控制器 我想嘲笑一个仓库 我想按原样注入一个服务(即不嘲笑它) 该类看起来像: 的(唯一)实现是用注释的,并允许通过其构造函数注入仓库: 运行测试时,我得到了一个,大致上说是“没有可用”。 我怀疑我可能需要一个特定的测试配置来获得服务,但是我被可用的在线文献弄糊涂了。 有指针吗?