
1. api (可选 - API定义层)
层级定位: 系统的最顶层,定义了对外的接口契约。
核心职责: 封装对外暴露的服务接口和数据传输对象(DTO)。如果这个系统需要被其他微服务调用,这个模块可以被打包成一个轻量级的
client.jar包提供给调用方。图中各部分内容:
dto: 数据传输对象(Data Transfer Object),用于跨服务或跨层的数据交换。response: 统一的API响应体结构。
2. app (应用启动层)
层级定位: 整个应用程序的入口和配置中心。
核心职责: 负责组装和启动整个Spring Boot应用。它像一个“总开关”,将所有模块整合在一起。
图中各部分内容:
启动类: 包含main方法的Spring Boot启动类(例如Application.java),上面有@SpringBootApplication注解。config: 存放全局的核心配置。例如,数据库连接池的配置、MyBatis的扫描配置、事务管理、全局缓存策略、线程池配置等。这些是整个应用都需要的基础设施配置。配置文件:src/main/resources下的application.yml等环境配置文件。单元测试: 单元测试的代码都在这个模块的test目录下面
3. trigger (触发层)
层级定位: 外部交互的直接入口,负责“触发”业务流程。
核心职责: 接收来自外部的请求,并将其转换为对领域层(
domain)或应用层服务的调用。这一层现在变得更薄,更专注于协议的转换。图中各部分内容:
http: RESTful API 控制器。负责处理HTTP请求。job: 定时任务。处理需要定时执行的业务。listener: 消息监听器。作为消息队列的消费者。
4. domain (领域层)
层级定位: 架构的绝对核心,包含了所有业务逻辑和规则。
核心职责: 纯粹地表达业务模型,不依赖任何技术实现。
图中各部分内容:
model: 领域模型,包括entity(实体),Value Object(值对象),Aggregate(聚合)。service: 领域服务,处理跨多个聚合的复杂业务逻辑。adapter: 端口 (Ports),定义了领域层与外部世界交互的接口,如repository接口和与其他系统交互的port接口。event: 领域事件,用于记录领域中已发生的重要事实,实现解耦。
5. infrastructure (基础设施层)
层级定位: 系统的技术实现层。
核心职责: 为领域层定义的“端口”(接口)提供具体的技术实现。
图中各部分内容:
gateway: 网关实现,负责与外部第三方API通信。adapter: 适配器 (Adapters),实现domain层定义的port和repository接口。dao: 数据访问对象,直接与数据库交互的MyBatis Mapper接口。redis: 封装所有与Redis缓存交互的具体实现代码。
6. types (通用类型层)
层级定位: 最基础的模块,被所有其他模块依赖。
核心职责: 提供全局通用的、与业务无关的基础数据结构和定义。
图中各部分内容:
common: 通用常量、工具类。enums: 全局共享的枚举定义。event: 领域事件的基础结构或消息体定义。exception: 自定义全局异常类。sdk: 与第三方SDK交互时用到的通用数据对象。