我使用 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/