java - 使用 Spring 从 Controller 层调用存储库和服务

标签 java spring model-view-controller service repository

我使用 Spring Boot 和 Spring Data。

我觉得分离 Repository Layer 和 Service Layer 没问题

所以我的 UserRepository 带有 CRUD 方法和一些 Spring Data 方法

  • 全部查找
  • 查找用户名

我还有带有业务方法的 UserService。

  • checkPassword(字符串登录名,字符串密码)
  • businessMethodAction(字符串用户名)

这是我的问题:

在我的 Controller 中,我必须从 UserService 调用方法,有时从 UserRepository 调用方法。目前,我将两者都注入(inject)到我的 Controller 中,然后调用服务或存储库

@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);
}

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

另一方面,这意味着像这样在服务层中复制方法

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

你怎么看?

最佳答案

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

关于java - 使用 Spring 从 Controller 层调用存储库和服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247453/

相关文章:

JavaScript MVC 框架 + raphaelJS

c# - Automapper 在第一次调用时正确映射,但在第二次调用时跳过属性

java - 在 Bean 类中使用 ApplicationContextAware 来初始化原型(prototype)作用域 bean 成员

java - Openshift 上下文路径

java - Spring Framework MVC 基本 Controller 方法

java - Spring数据事务控制

objective-c - 与 Objective C 中的 MVC 混淆

java - Android - 按钮文本颜色未被覆盖

java - 无法使用 php exec 执行 jar 文件,尽管它可以在终端中运行

spring - 获取 Spring MessageContext