【问题标题】:MVC - Spring Boot and Angular - What is the View in Spring?MVC - Spring Boot 和 Angular - Spring 中的视图是什么?
【发布时间】:2020-06-21 10:16:34
【问题描述】:
在 JHipster 框架的帮助下,我使用 Spring Boot for Backend 和 Angular 8 for Frontend 创建了一个 Web 应用程序。前端使用 REST API 与后端通信。
我知道 Spring 和 Angular 都使用 MVC 模型。因此,在 Spring 的情况下:
- 数据库、JPA 类和存储库是 模型
- REST 控制器是 控制器
我的问题是:Spring 应用程序中的 View 部分是什么?我的猜测是整个 Angular 应用程序都扮演了视图的角色。对吗?
【问题讨论】:
标签:
java
angular
spring-mvc
model-view-controller
【解决方案1】:
由于 Spring MVC 概念,Spring 中的视图部分很受欢迎,其中 视图 由 JSP(动态) 和 HTML(静态) 组成> 页。
正如你所说的,Spring 和 Angular 都是基于 MVC 的框架,但现在的趋势是转向微服务架构而不是单体架构。
微服务架构的操作与语言无关,并使用 REST 服务进行通信。
目前,重点是关注点分离以及交付代码的速度。
1. Angular 框架处理 UI 部分
2. Spring 框架处理后端操作(业务逻辑、与数据库和其他服务器的交互。
在spring框架中MVC的意思
- Model - 携带数据的类
- 查看 - 查看页面 (JSP/HTML)
- Controller - 管理操作的类
正如你在帖子中所说的数据库、JPA 类和存储库是模型,这些只不过是与 MVC 模式集成以与数据库通信的存储库模式。
【解决方案2】:
要启动 Angular 不使用 MVC,Angular 使用 MVVM (model-view-view-model) 或 MVW (model-view-whatever)
其次,您的后端使用 n 层模式
服务层:实现业务逻辑
数据访问对象:这些是您的服务层将调用以获取/更新所需数据的抽象。该层通常会调用数据库或其他一些系统(例如:LDAP 服务器、Web 服务或 NoSql 类型的 DB)
控制器层:将接收客户端请求。
换句话说,您有一个客户端-服务器架构,具有 n 层模式,其中角度(视图层)使用 MVVM 模式。
观察:
您使用的模型可能来自也可能不来自您的服务。您可能希望获取您的服务为您提供的结果,并将它们处理成更适合您的媒体(例如:网页)的模型。
区分数据库模型(dao - 数据访问对象)和传输模型(dto - 数据传输对象)