Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
springboot-REST体系结构_Spring_Angular_Spring Boot_Model View Controller - Fatal编程技术网

springboot-REST体系结构

springboot-REST体系结构,spring,angular,spring-boot,model-view-controller,Spring,Angular,Spring Boot,Model View Controller,最近我一直在开发一个带有Angular 5前端的Spring boot应用程序,我对它的体系结构有点困惑。我在春季被教导编写存储库、服务和控制器,并遵循MVC模式。我开始为应用程序编写文档,我试图描述ArhitArchitecture。我认为View是Angular应用程序,C由控制器类组成,我将第三层描述为buisniss逻辑,它由实体和服务类组成。但模型究竟是什么?我是否遵循了MVC模式?此外,我还有一个controlleradvice、异常类和安全类,它们使用jwts进行身份验证和授权,但

最近我一直在开发一个带有Angular 5前端的Spring boot应用程序,我对它的体系结构有点困惑。我在春季被教导编写存储库、服务和控制器,并遵循MVC模式。我开始为应用程序编写文档,我试图描述ArhitArchitecture。我认为View是Angular应用程序,C由控制器类组成,我将第三层描述为buisniss逻辑,它由实体和服务类组成。但模型究竟是什么?我是否遵循了MVC模式?此外,我还有一个controlleradvice、异常类和安全类,它们使用jwts进行身份验证和授权,但我想这些类完全不属于MVC

我一直在寻找解释,但似乎没有找到。有人能给我解释一下吗?谢谢大家!

更新

所以基本上我不理解的是spring类+angular如何满足MVC模式的要求

例如,当您搜索spring层时,这是internet上最早的图表之一,但正如我所看到的,它们与MVC不同


Angular是一个SPA,一个单页应用程序。它包含所有内容、模型(更改业务数据)、视图(使用HTML的模板)和控制器(组件中的单击和其他事件处理程序)

Spring后端是模型的扩展,用于执行进一步的数据转换并将其存储在数据库中

Model-View-Something(还有MVVM和派生)是一种来自桌面应用程序的模式,但它并不真正适合spa的世界。即使在桌面应用程序中,MVC中的控制器也常常被视为冗余的(因为它只是委托一些东西,没有视图和模型那么重要)


当您使用Angular时,重要的是要知道组件模式。它适用于角度、反应、Vue甚至Vaadin。组件是处理HTML的HTML和脚本代码的块。组件可以相互嵌套,从而实现分层体系结构。

我正在做同一个项目,angular作为前端,spring boot作为后端,我仍然对它的体系结构有点困惑,就像你一样,但我最终不得不采用MVC模型,因为我实际上使用的是控制器,定义模型和呈现视图(json结果)

显然,您的前端使用CBA(基于组件的体系结构),后端使用MVC模式,因为SpringMVC嵌入在SpringBoot中,所以它实际上使用相同的逻辑。 这里简要介绍了Spring启动如何在控制器和请求之间进行调度,您可以将调度器Servlet视为前端和后端之间的中间件(但请记住,它嵌入在Spring启动容器中)

如评论中所述,Spring boot后端和Angular前端都可以被视为不同的应用程序,每个应用程序都遵循Model View Controller设计模式

您还发布了的屏幕截图。这种类型的体系结构只告诉您如何构造代码。通常,应用程序的MVC部分位于表示层中(在屏幕截图中称为web层)

因此,如果您查看后端应用程序,可以确定以下部分:

  • 数据层/存储库层:存储库
  • 业务层/服务层:服务
  • 表示层/Web层:模型视图控制器+调度程序
    • 模型:您在服务中公开的任何内容(可能是DTO)
    • 查看:JSON结构/映射
    • 控制器:弹簧控制器
对于前端,您还可以识别它们:

  • 数据层:HTTP调用
  • 业务层:角度服务
  • 表示层:组件+路由器
    • 模型:您在服务中公开的内容(可能与您在后端公开的结构类似)
    • 查看:模板
    • 控制器:组件


这有点过于简单,可能不是每个人都会同意的。

我希望有人对此发表评论,我想知道其他人怎么想。我不认为“Spring是模型的扩展”,恰恰相反。模型(或其部分)在Angular中也可能存在,因为它聚合和转换数据以满足用户需求或UI/UX的要求。但是完整的模型及其所有业务逻辑和验证都在后端,至少在任何严肃的应用程序中都可以找到。因此,Angular最终可能包含模型的扩展,而不是相反。y可以吗你要澄清你的问题吗?它仅仅是关于MVC的一个清晰的定义吗?应该在因特网上这么多的页面上找到……试图将MVC模式扩展到弹簧和角度是不可行的。你应该把角和弹簧都看作是一个自己的应用程序,两者都能实现MVC模式。前端Spring通常不做任何与视图相关的事情,因此既没有控制器也没有视图。它通过Rest接口提供模型,例如JSON,由Angular的服务层使用并传播到组件。我认为Angular使用CBA架构,这与MVC不同,因为CBA将bet分离在模型视图和控制器之间垂直使用数据绑定和事件。@YassineBenHamida当然在方法上有一些不同,但从广义上看,Spring MVC也可以处理事件(传入HTTP请求)和事件