Skip to content

模块命名规范 ​

Maven 模块 ​

必须 使用 ecshopx-<domain> 作为 Maven 子模块名,与业务域一一对应。

概念规范示例
Maven 模块ecshopx-<domain>ecshopx-goods、ecshopx-orders
Java 根包cn.shopex.ecshopx.<domain>cn.shopex.ecshopx.goods
启动装配ecshopx-bootstrap 引入依赖见 Bundle

新增模块时同步更新:父 POM <modules>、ecshopx-bom、ecshopx-bootstrap/pom.xml。

包内目录 ​

以 ecshopx-goods 为例,根包下常见目录:

目录职责
apiHTTP 控制器,admin/v1、front/v1 分子包
service业务编排与领域逻辑
mapperMyBatis-Plus BaseMapper
domain表映射实体
repositoryMapper 之上的可复用查询封装(按需)
integration跨模块 Port 实现
dispatch本模块事件发布
openapi开放 API Port 实现
cron@XxlJob 定时任务
config模块级 Spring 配置

类命名 ​

类型规范示例
实体单数名词,与表语义一致Items、NormalOrders
Mapper<Entity>MapperItemsMapper
Repository<领域>RepositoryItemsRepository
Service<业务>Service 或 <动作>FacadeServiceGoodsItemsListFacadeService
Controller<资源>Controller,放 api.admin.v1 或 api.front.v1ItemsController
领域事件<业务>Event按模块约定
XXL-JOB@XxlJob("handler-name") 与 Admin 配置同名aliyunsms-run-task

实体(domain) ​

  • 必须 放在对应模块的 domain 包下;
  • 字段 推荐 使用 Lombok 或显式 getter/setter,与 MyBatis-Plus 映射一致;
  • 布尔字段在 Java 侧 不要 加 is 前缀(与 MySQL 规范 中 is_xxx 列名映射约定一致)。

控制器 ​

控制器方法 应该 只承担:

  1. 校验入参(含鉴权注解);
  2. 调用 service;
  3. 封装统一响应(ApiResult、@DingoResponse)。
  • 单方法 应该 控制在约 80 行以内;超出则将逻辑下沉 service;
  • 禁止 在 Controller 中直接注入 Mapper / Repository;
  • 禁止 跨模块直接注入对方 Bundle 的持久化类,应通过 Port 或事件。

详见 Controller、API 控制器规范。