Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我们先创建存储库,然后创建服务,然后再从存储库实现服务?请检查您输入的代码';你会明白吗?_Java_Spring_Spring Mvc_Spring Boot_Spring Data - Fatal编程技术网

Java 为什么我们先创建存储库,然后创建服务,然后再从存储库实现服务?请检查您输入的代码';你会明白吗?

Java 为什么我们先创建存储库,然后创建服务,然后再从存储库实现服务?请检查您输入的代码';你会明白吗?,java,spring,spring-mvc,spring-boot,spring-data,Java,Spring,Spring Mvc,Spring Boot,Spring Data,} 现在是服务接口和实现 public interface CrudRepository{ Test createThis(Test t); } @Repository public class TestCrud implements CrudRepository{ public Test createThis(Test t) { //implementation } @服务 公共类TestService实现CrudService{ public interfa

}


现在是服务接口和实现

public interface CrudRepository{
  Test createThis(Test t);
}

@Repository
public class TestCrud implements CrudRepository{
   public Test createThis(Test t)
{
     //implementation 
}
@服务 公共类TestService实现CrudService{

   public interface CrudService{
     Test createThis(Test t);
   }
}

当我们使用spring开发web项目时,我们首先使用接口,然后在存储库中实现,而不是 我们再次执行接口,并从存储库实现服务。同样,我们为什么不直接使用 控制器中的存储库,但我们要这样做吗?我希望有人能向我解释一下主要原因是“灵活性”。在您的情况下,服务不知道数据来自何处?而且也不一定。它只知道有一个存储库可以提供一些数据。服务不应该知道日期保存在哪里。它可以在文件、数据库或内存中。另一个目标是,若你们有一个将数据保存在文件中的应用程序,你们想切换到数据库。您只需要编写新的存储库层,它将了解数据库,而不需要在服务层中切换一行代码。这是编写大型应用程序时的主要目标


如果您不理解我的意思,您可以阅读有关“打开-关闭”原则的内容:

您可以从一个存储库切换到另一个存储库。。类似地,您可以从一个服务切换到另一个服务。问题是什么?它将您的控制器与存储库隔离,允许您在不重写整个后端应用程序的情况下切换数据库技术。是的,谢谢,我想现在我理解了存储库和服务的区别,因为在这么多教程中,我只看到了一些相同的东西,我对这些东西感到困惑。再次感谢,祝你一切顺利:))
    @AutoWired
    CrudRepository crudR;

    public Test createThis(Test t){
           crudR.createThis(t)
    }