📊 一、技术栈全景图(分层架构)

🔧 二、关键技术组件详解

1. 核心框架层
  • Spring Boot 3.1.2
    简化依赖管理与自动配置,通过@SpringBootApplication整合Tomcat容器。
  • MyBatis 动态SQL
    解决多条件查询拼接问题,支持XML与注解双模式:
<select id="searchDishes" resultType="DishVO">
  SELECT d.*, c.name AS categoryName 
  FROM dish d LEFT JOIN category c ON d.category_id = c.id
  <where>
    <if test="name != null">AND d.name LIKE CONCAT('%', #{name}, '%')</if>
    <if test="categoryId != null">AND d.category_id = #{categoryId}</if>
  </where>
</select>
  • PageHelper 分页插件
    简化分页逻辑,避免手动计算LIMIT偏移量。
2. 数据层
  • MySQL 读写分离
    主库处理写操作(订单创建),从库处理读操作(菜品查询)。
  • Redis 多场景应用
    • 缓存热点菜品数据(@Cacheable注解)
    • 分布式锁防重复提交(SETNX命令)
    • 存储营业状态(启用/停业)。
  • 阿里云OSS
    替代本地存储,解决图片访问路径管理与CDN加速问题。
3. 业务支撑层
  • Spring Task 定时任务
    每5分钟扫描超时订单并自动取消:
@Scheduled(cron = "0 */5 * * * ?")
public void cancelUnpaidOrders() {
    orderService.cancelExpiredOrders();
}
  • WebSocket 实时通信
    管理端接收新订单语音播报,用户端跟踪骑手位置。
4. 安全与通信
  • JWT 无状态认证
    Token中嵌入用户ID与角色,配合ThreadLocal实现线程级数据隔离。
  • HttpClient 第三方集成
    调用微信支付预下单接口、高德地图路径规划API。
5. 前端技术
  • 管理端
    Vue 3 + Element Plus 构建,采用模块化开发(components/utils/目录)。
  • 微信小程序
    基于MINA框架,集成微信支付与LBS定位。
6. 运维部署
  • Nginx 反向代理
    配置静态资源缓存(JS/CSS)与API请求转发。
  • Docker 容器化
    封装应用与环境依赖,保证开发-测试-生产环境一致性。

⚙️ 三、典型业务场景实现

1. 订单创建流程
sequenceDiagram
    用户->>小程序: 提交订单
    小程序->>后端: 携带JWT发起请求
    后端->>MySQL: 写入订单表(状态:待支付)
    后端->>Redis: SETNX防重提交(Key:order_用户ID)
    后端->>微信支付: HttpClient调用预支付接口
    微信支付-->>后端: 返回支付二维码URL
    后端-->>小程序: 返回支付链接
2. 全局异常处理
  • 自定义业务异常类(如DeletionNotAllowedException
  • @ControllerAdvice统一拦截异常,返回标准Result对象:
@ExceptionHandler(BusinessException.class)
public Result handleBizEx(BusinessException ex) {
    return Result.error(ex.getMessage());
}
3. 公共字段自动填充

利用AOP+注解实现创建人/更新时间自动填充:

@AutoFill(OperationType.INSERT)
public void fillFields(BaseEntity entity) {
    entity.setCreateTime(LocalDateTime.now());
    entity.setCreateUser(CurrentUserUtil.getId());
}

🛡️ 四、技术选型优势与局限

维度

优势

局限性(教学版)

开发效率

Spring Boot开箱即用 + Vue组件化开发

未引入代码生成器,基础CRUD需手动实现

性能

Redis缓存热点数据(QPS 5万+) + Nginx负载均衡

未优化缓存穿透/雪崩(如布隆过滤器)

可维护性

Swagger接口文档 + 统一Result

响应格式

未集成ELK日志分析

扩展性

Docker容器化部署

未实现分库分表,MySQL单表数据量上限低


🔍 五、项目特色实践

  1. 分层解耦规范
    严格划分四层:sky-common(工具类)、sky-pojo(实体/DTO)、sky-service(业务逻辑)、sky-web(Controller)。
  2. 防御式编程
    • SQL注入防护:MyBatis参数绑定#{param}
    • XSS攻击过滤:Jackson序列化转义HTML字符
  1. 事务一致性
    关键操作(如下单扣库存)使用@Transactional保证原子性。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐