苍穹外卖学习笔记(项目架构)
2026/5/23 12:33:21 网站建设 项目流程

这是一个非常经典的 Maven 多模块(Multi-module) 项目结构,通常用于基于 Spring Boot 的企业级开发。这种架构的核心思想是 “分而治之”,将一个庞大的单体应用拆分成几个职责单一的小模块。
这种分层设计不仅能让项目结构更清晰,还能提高代码的复用性和可维护性。

项目名为 sky-take-out1,它下面包含了三个主要的子模块:

  1. sky-common:公共模块。
  2. sky-pojo:实体类/数据传输对象模块。
  3. sky-server:核心业务服务模块(启动类所在)。
    这种设计属于典型的 三层架构 变体,通过 Maven 的依赖管理将代码物理隔离。

📦 子模块详解

1. sky-common

(公共工具模块)定位:整个项目的“工具箱”和“基础设施”。

annotation:用于存放自定义注解。例如,可能会定义一些用于权限校验、日志记录或参数校验的注解。
aspect:存放切面类(Aspect),通常与 annotation 包配合使用,通过 AOP(面向切面编程)来实现横切关注点,比如记录操作日志、处理全局异常等。
constant:存放项目中用到的各种常量类,例如状态码、消息提示、业务常量等,避免在代码中硬编码。
context:通常用于存放上下文类,比如用于在请求处理过程中传递用户信息、租户信息等。
enumeration:存放枚举类。枚举常用于定义一组固定的常量,如订单状态、用户类型等,使代码更清晰、安全。
exception:存放自定义异常类和全局异常处理器。用于统一处理项目中可能出现的各种业务异常。
json:这个包名比较特殊,通常用于存放与 JSON 序列化/反序列化相关的配置或工具类。例如,可能会在这里配置 Jackson 或 Fastjson 的序列化规则。
properties:用于存放配置属性类,这些类通常使用 @ConfigurationProperties 注解,用于将 application.yml 或 application.properties 中的配置项映射到 Java 对象中。
result:存放统一的返回结果封装类。在企业级开发中,后端接口通常会返回一个统一的格式(如 Result),包含状态码、消息和数据,这个包就是存放这类封装类的。
utils:存放各种工具类,例如日期处理、字符串处理、加密解密、文件操作等通用方法。

2. sky-pojo

(实体对象模块)定位:数据的载体。POJO 意为“Plain Old Java Object”(简单的 Java 对象)。

**dto:** Data Transfer Object(数据传输对象)。这个包用于存放 DTO 类。DTO 的主要作用是在不同的层之间传递数据,尤其是在 Controller 层和 Service 层之间。使用 DTO 可以避免将数据库实体直接暴露给前端,从而提高安全性和灵活性。例如,用户注册时,前端传来的数据可能包含密码,但数据库实体中可能还包含其他敏感信息,这时就可以使用一个 UserRegisterDTO 来接收前端数据。 **entity:** 实体类。这个包用于存放与数据库表直接映射的实体类。通常,一个 entity 类对应数据库中的一张表,类的属性对应表中的字段。这些类通常会使用 JPA 或 MyBatis-Plus 等 ORM 框架的注解来进行映射。 **vo:** View Object(视图对象)。这个包用于存放 VO 类。VO 的主要作用是将数据封装成前端需要的格式,然后返回给前端。使用 VO 可以避免将后端实体的所有字段都返回给前端,从而提高安全性和灵活性。例如,查询用户信息时,后端可能只需要返回用户的姓名和头像,而不需要返回密码等敏感信息,这时就可以使用一个 UserVO 来封装返回数据。

3. sky-server

(服务启动模块)定位:项目的核心,负责处理 HTTP 请求,协调业务逻辑。它是整个应用的入口。
Java 代码包解析

**config**

作用:存放配置类。
内容:这里就是我们要找的 RedisConfig 应该存放的地方。此外,还会有 WebMvcConfig(配置拦截器)、Swagger配置(接口文档)、Security配置(安全框架)等。

**controller**

作用:控制层,接收前端请求。
内容:存放所有的 Controller 类。它们负责接收 HTTP 请求(GET/POST 等),调用 Service 层处理业务,并返回结果(通常是 JSON)。

**handler**

作用:处理器。
内容:通常用于存放全局异常处理器(@ControllerAdvice)或者 MyBatis 的 TypeHandler(类型处理器)。

**interceptor**

作用:拦截器。
内容:存放自定义的拦截器。比如用来验证用户是否登录(Token 校验)、记录请求日志等。

**mapper**

作用:持久层接口。
内容:存放 MyBatis 或 MyBatis-Plus 的 Mapper 接口。这些接口负责与数据库进行交互(增删改查)。
注意:对应的 SQL 语句通常写在 resources/mapper 目录下的 XML 文件中。

**service**

作用:业务逻辑层。
内容:存放 Service 接口及其实现类(Impl)。这是代码最核心的地方,处理具体的业务规则,比如“下单”、“支付”、“库存扣减”等逻辑都在这里编写。

**SkyApplication**

作用:项目的主启动类。
内容:包含 main 方法。Spring Boot 项目就是从这个类开始运行的。它通常带有 @SpringBootApplication 注解。
Resources 资源目录解析

**mapper**

存放 MyBatis 的 XML 映射文件。
application.yml
项目的主配置文件,通常用于配置端口号、引入其他配置文件等。
application-dev.yml
开发环境的配置文件。里面通常包含数据库连接信息、Redis 连接信息等。

总结
sky-server 是项目的“大脑”:
它依赖 sky-common 来获取工具类和通用配置。
它依赖 sky-pojo 来获取实体类和数据传输对象。
它自己负责处理 Web 请求、业务逻辑和数据库交互。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询