Skip to content

阿里巴巴 MVC 架构,根据阿里云项目脚手架搭建。

License

Notifications You must be signed in to change notification settings

shiyindaxiaojie/eden-demo-mvc

Repository files navigation

分层架构

本项目使用 MVC 架构构建,MVC 架构是一种面向数据模型的传统架构风格,默认上层依赖于下层,例如控制层依赖业务层、业务层又依赖数据模型层,在垂直业务领域能够满足单一职责原则,通过 Maven 多模块化的开发模式,可以帮助降低复杂应用场景的系统熵值,提升系统开发和运维效率。

参考文档请查看 WIKI

组件构成

  • eden-demo-mvc-dao:数据持久层,与底层 MySQL 进行数据交互。
  • eden-demo-mvc-service:业务逻辑服务层
  • eden-demo-mvc-web:请求控制层,对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等
  • eden-demo-mvc-start:程序启动入口

运行流程

如何构建

由于 Spring Boot 2.4.xSpring Boot 3.0.x 在架构层面有很大的变更,因此笔者采取跟 Spring Boot 版本号一致的分支:

  • 2.4.x 分支适用于 Spring Boot 2.4.x,最低支持 JDK 1.8。
  • 2.7.x 分支适用于 Spring Boot 2.7.x,最低支持 JDK 11。
  • 3.0.x 分支适用于 Spring Boot 3.0.x,最低支持 JDK 17。

本项目默认使用 Maven 来构建,最快的使用方式是 git clone 到本地。为了简化不必要的技术细节,本项目依赖 eden-architect ,在项目的根目录执行 mvn install -T 4C 完成本项目的构建。

如何启动

快速体验

本项目默认设置了 dev 环境运行,所有外部的组件依赖均为关闭状态。

  1. 在项目目录下运行 mvn install(如果不想运行测试,可以加上 -DskipTests 参数)。
  2. 进入 eden-demo-mvc-start 目录,执行 mvn spring-boot:run 或者启动 MvcApplication 类。运行成功的话,可以看到 Spring Boot 启动成功的界面。
  3. 本应用中已经实现了一个简单的 RestController 接口,可以点击 演示接口 进行调试。
  4. 由于目前的主流是前后端分离开发,请按需实现页面。访问 http://localhost:8083 将跳转到 404 页面。

微调配置

修改默认的数据源:本项目默认使用 H2 内存数据库启动,基于 Liquibase 在项目启动时自动初始化 SQL 脚本。如果您使用的是外部的 MySQL 数据库,可以从此处调整下数据库的连接信息:application-dev.yml,请删除任何与 H2 有关的配置。

spring:
#  h2: # 内存数据库
#    console:
#      enabled: true # 线上环境请勿设置
#      path: /h2-console
#      settings:
#        trace: false
#        web-allow-others: false
  datasource: # 数据源管理
    username: 
    password: 
    url: jdbc:mysql://host:port/schema?rewriteBatchedStatements=true&useSSL=false&useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver

此外,本项目还罗列了 Redis 缓存、RocketMQ 消息队列、ShardingSphere 分库分表等常用组件的使用方案,默认通过 xxx.enabled 关闭自动配置。您可以根据实际情况开启配置,直接完成组件的集成。

版本规范

项目的版本号格式为 x.y.z 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用 0,即版本号为 0.x.x 的格式。

  • 孵化版本:0.0.1-SNAPSHOT
  • 开发版本:1.0.0-SNAPSHOT
  • 发布版本:1.0.0

版本迭代规则:

  • 1.0.0 <> 1.0.1:兼容
  • 1.0.0 <> 1.1.0:基本兼容
  • 1.0.0 <> 2.0.0:不兼容

持续集成

CI/CD 工具选型:Jenkins、Zadig、CODING、Codeup

CODING 持续交付

下图演示基于 CODING 实现持续构建、持续部署的效果

Codeup 持续集成

TODO, Coming soon

最佳实践

Git 多人协作分支管理

在敏捷开发盛行的时代,GitFlow 显得力不从心,笔者为团队制定了一套简单易用的流程。

CAT 可观测性方案

通过 TraceId 分析整个链路的 HTTP 请求耗时、RPC 调用情况、Log 业务日志、SQLCache 执行耗时。传送门

Arthas 在线诊断工具

使用动态时运行探针,自动发现服务,开箱即用,允许在低负载环境诊断你的应用。传送门

变更日志

请查阅 CHANGELOG.md