【发布时间】:2021-05-29 16:35:47
【问题描述】:
我正在构建一个由 Spring Boot 后端和 Angular 前端组成的应用程序。 以下项目结构有哪些优缺点?
要求:
- maven 项目
- spring security(登录+注册)->表格?基本的? jwt?
- 角度前端
- Spring Boot 后端
我想到了以下几种可能:
在同一台服务器上运行的 spring 项目中的 Angular
Angular 项目文件夹位于 spring boot 项目中。在构建 Spring Boot 应用程序时,将构建 Angular 项目并将其包含在静态文件夹中。
优点:
- 只有一个可部署
- 轻松使用spring security(表单登录+会话)
- 单一代码库
缺点:
- ui 高度依赖后端
- 负载平衡可能更困难(我不确定)
Spring Boot + Angular 在一个项目和同一服务器中
Angular 应用程序和 Spring Boot 应用程序位于不同的文件夹中(可能是包含这 2 个 maven 模块的根项目)。在构建 spring 项目时,将构建 angular 项目并将其包含在它的目标文件夹中(例如:https://github.com/FraktonDevelopers/spring-boot-angular-maven-build)
优点:
- 只有一个可部署
- 轻松使用spring security(表单登录+会话)
- 单一代码库
- 多模块maven项目
缺点:
- ui 高度依赖后端
- 负载平衡可能更困难(我不确定)
Spring Boot + Angular 在一个项目和不同的服务器中
Angular 项目文件夹与 Spring Boot 项目在同一个项目中(可能是一个根文件夹,其中有 ui 和后端项目作为单独的文件夹)。后端和ui在不同的服务器上运行(spring boot的jar/war中不包含angular)
优点:
- 单一代码库
- 将 ui 与后端分离 缺点:
- 安全性要困难得多(您需要检查用户是否在前端手动登录并手动接收会话/jwt)
Spring Boot + Angular 在不同的项目和不同的服务器中
这两个项目完全分开(两个 git repos)并且没有共同的代码。它们部署在不同的服务器上。
优点:
- 将 ui 与后端分离 缺点:
- 安全性要困难得多(您需要检查用户是否在前端手动登录并手动接收会话/jwt)
- 开发时要打开两个项目
哪种项目结构是“最佳实践”?还有其他选择吗?我错过了任何优点/缺点吗?
是否有任何示例项目/开源项目?我更喜欢生产就绪的架构/结构,最好包括弹簧安全性。
【问题讨论】:
标签: angular spring spring-boot maven architecture