java - spring data jpa repo,为什么需要接口(interface)服务和服务实现

标签 java spring spring-mvc spring-boot spring-data-jpa

我刚开始研究 Spring Boot , 使用 Spring Data JPA .当我从表生成模型时,我创建了一个扩展 JpaRepository<myModel, String> 的 modelRepo

public interface userRepository extends JpaRepository<User, String>{
}

然后我可以从 Controller 轻松调用 userRepository.findAll()获取数据。

但是,当我查看一些教程时,它们在调用 findAll() 之前有额外的几个步骤。看看下面:

public interface userService{
Iterator findAll();

    public class userServiceImpl implements userService{
       @Autowired
       UserRepository userRepository
       @Override
       Iterator findAll(){
        return userRepository.findAll();
       }
    }

诸如此类,我可以直接从userRepository中查询数据只要@Autowired注入(inject)userRepository .

在某些示例中,它们执行与上面相同的结构。谁能解释为什么我们需要 serviceserviceImpl在调用数据之前。

最佳答案

因为所谓的“服务”类(“继承”了 N 层架构)是业务逻辑“存在”的地方。最后,这取决于您的方法/设计指南、您希望管理交易的方式、构建项目等等。

如果您只需要调用数据库并返回数据,您可以安全地跳过“服务”调用/类。另一方面,如果您“在现实生活中”做某事,您最终会大量使用这些“服务”类,因为大多数操作(阅读:业务逻辑)将在那里,所以您会希望将所有这些行为隔离在一个地方 — 否则您将在没有遵循任何“项目组织”的情况下到处注入(inject) bean。有时这有点乏味,但另一方面,当您需要更改某些内容时,您知道该去哪里寻找。在大中型项目中,这非常重要;如果有多个人修改同一个代码库,甚至更多。

提示:保持小类授课。在“服务”类上注入(inject)大量的 bean(存储库、服务等)是糟糕的设计,可能会导致您产生其他胡思乱想。

关于java - spring data jpa repo,为什么需要接口(interface)服务和服务实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329484/

相关文章:

java - Spring Controller 保持旧值

java - HTML - 有条件地选中复选框

java - 如何在 Spring MVC 中为某个类自定义 JSON

java - 使用 Java 写入文本文件被缩短了

java - url解码导致tomcat中出现问号

java - 求一个结合对少数web技术的理解的问题

java - JUnit 测试时排除@Component 类的过滤器?

Spring Security/j_spring_security_check 未找到 404

spring - 如何在 Spring BOOT 中传递 JVM 参数

java - 在 Java 中加载 32 位或 64 位 JNI 库