开发规范指南
为保证代码质量、可维护性、安全性与可扩展性,请在开发过程中严格遵循以下规范。
一、项目基本信息
- 工作目录:
E:\work\pipe-ner-server
- 代码作者:Administrator
- 构建工具:Maven
- JDK 版本:Java 11 (JDK 11.0.27)
- 核心框架:Spring Boot 2.7.12
- 微服务架构:Spring Cloud 2021.0.3 + Spring Cloud Alibaba 2021.0.4.0
二、项目目录结构
本项目采用多模块 Maven 架构,包含网关、公共模块及多个业务服务模块。
pipe-ner-server
├── audio-service # 音频服务
├── docs # 文档
├── environment-service # 环境服务
├── firefighting-pressure-service # 消防压力服务
├── flammable-gas-service # 易燃气体服务
├── manhole-service # 井盖服务
├── pipe-network-service # 管网核心服务
│ ├── zksy-admin # Web服务入口
│ ├── zksy-common # 通用工具
│ ├── zksy-framework # 框架核心
│ ├── zksy-generator # 代码生成
│ ├── zksy-quartz # 定时任务
│ └── zksy-system # 系统模块
├── radar-service # 雷达服务
├── telemetry-service # 遥测服务
├── water-level-service # 水位服务
├── zk-api-service # API服务
├── zk-common # 公共模块
└── zk-gateway # 网关服务
三、技术栈要求
- 主框架:Spring Boot 2.7.12
- 语言版本:Java 11
- 数据库:KingbaseES (人大金仓) / MySQL
- ORM框架:MyBatis-Plus 3.5.7
- 核心依赖:
spring-boot-starter-web
mybatis-plus-boot-starter
lombok
hutool-all (工具类库)
spring-cloud-starter-alibaba-nacos (注册中心/配置中心)
spring-cloud-starter-alibaba-sentinel (熔断限流)
knife4j-openapi2-spring-boot-starter (API文档)
四、分层架构规范
| 层级 |
职责说明 |
开发约束与注意事项 |
| Controller |
处理 HTTP 请求与响应,定义 API 接口 |
使用 @RestController;不得包含业务逻辑,仅负责参数校验和结果封装 |
| Service |
实现业务逻辑、事务管理与数据校验 |
接口定义在 service 包,实现类放在 service.impl 包;事务注解 @Transactional 仅在此层使用 |
| Mapper |
数据库访问与持久化操作 |
继承 BaseMapper;对应 XML 文件需放在 resources/mapper 目录下 |
| Domain/Entity |
映射数据库表结构及数据传输对象 |
实体类建议放在 domain 包;DTO/VO/Query 对象按职责定义 |
接口与实现分离
- 所有 Service 接口实现类需放在接口所在包下的
impl 子包中。
五、安全与性能规范
输入校验
- 使用
@Valid 与 JSR-303 校验注解(如 @NotBlank, @Size 等)
- 注意:Spring Boot 2.x 中校验注解位于
javax.validation.constraints.*
- 禁止在 XML 文件中使用
${} 拼接 SQL,防止 SQL 注入,必须使用 #{}。
事务管理
@Transactional 注解仅用于 Service 层方法。
- 避免在循环中频繁提交事务,影响性能。
六、代码风格规范
命名规范
| 类型 |
命名方式 |
示例 |
| 类名 |
UpperCamelCase |
UserServiceImpl |
| 方法/变量 |
lowerCamelCase |
saveUser() |
| 常量 |
UPPER_SNAKE_CASE |
MAX_LOGIN_ATTEMPTS |
注释规范
- 所有类、接口、公共方法需添加 Javadoc 注释。
- 注释语言:必须使用中文(用户第一语言)。
- 作者信息统一填写:
@author Administrator
类型命名规范(阿里巴巴风格)
| 后缀 |
用途说明 |
示例 |
| DTO |
数据传输对象 |
UserDTO |
| Entity/DO |
数据库实体对象 |
UserDO |
| BO |
业务逻辑封装对象 |
UserBO |
| VO |
视图展示对象 |
UserVO |
| Query |
查询参数封装对象 |
UserQuery |
实体类简化工具
- 使用 Lombok 注解替代手动编写 getter/setter/构造方法:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder (如需链式调用)
七、扩展性与日志规范
接口优先原则
- 所有业务逻辑通过接口定义(如
UserService),具体实现放在 impl 包中(如 UserServiceImpl)。
日志记录
- 使用
@Slf4j 注解代替 System.out.println。
- 日志级别规范:开发环境使用 DEBUG,生产环境使用 INFO 或 WARN。
工具类使用
- 优先使用
hutool-all 工具包中的工具类(如 StrUtil, CollUtil 等),避免重复造轮子。
- 日期处理优先使用
java.time 包下的类。
八、编码原则总结
| 原则 |
说明 |
| SOLID |
高内聚、低耦合,增强可维护性与可扩展性 |
| DRY |
避免重复代码,提高复用性 |
| KISS |
保持代码简洁易懂 |
| YAGNI |
不实现当前不需要的功能 |
| OWASP |
防范常见安全漏洞,如 SQL 注入、XSS 等 |