开发规范指南
为保证代码质量、可维护性、安全性与可扩展性,请在开发过程中严格遵循以下规范。
一、项目基本信息
- 工作目录: D:\地址灾害\GeoHazardMonitor
- 项目名称: GeoHazardMonitor
- 开发者: Administrator
- 第一语言: 中文(注释使用中文)
二、技术栈要求
- 主框架: Spring Boot 2.5.14
- 语言版本: Java 1.8
- 构建工具: Maven
- 数据库驱动: MySQL Connector/J
- 持久层框架: MyBatis Plus
- 缓存中间件: Redis
- MQTT客户端: Eclipse Paho Client
- 消息队列: RabbitMQ (AMQP)
- 序列化库: FastJSON
- 其他依赖:
- Lombok
- Druid 数据库连接池
- MinIO 客户端
- Hutool 工具类库
 
三、目录结构说明
GeoHazardMonitor
├── business-service
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── ozs
│       │   │           └── service
│       │   │               ├── entity
│       │   │               │   └── vo
│       │   │               ├── mapper
│       │   │               ├── params
│       │   │               ├── service
│       │   │               │   └── impl
│       │   │               └── utils
│       │   └── resources
│       │       └── mapper
│       │           └── service
│       └── test
│           └── java
│               └── com
│                   └── ozs
│                       └── service
│                           └── test
├── hazard-admin
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── ozs
│           │           └── web
│           │               ├── controller
│           │               │   ├── accountmanagment
│           │               │   ├── app
│           │               │   ├── common
│           │               │   ├── home
│           │               │   ├── monitor
│           │               │   ├── mqtt
│           │               │   ├── shotschedule
│           │               │   ├── system
│           │               │   ├── tool
│           │               │   ├── upload
│           │               │   └── websocket
│           │               └── core
│           │                   ├── config
│           │                   ├── init
│           │                   └── util
│           └── resources
│               ├── i18n
│               ├── META-INF
│               ├── mybatis
│               └── template
└── hazard-sdk
    └── src
        └── main
            ├── java
            │   └── com
            │       └── ozs
            │           ├── config
            │           │   ├── datasource
            │           │   └── properties
            │           ├── controller
            │           │   └── upload
            │           ├── jpush
            │           ├── vo
            │           └── websocket
            └── resources
                ├── i18n
                ├── META-INF
                └── mybatis
四、分层架构规范
| 层级 | 职责说明 | 开发约束与注意事项 | 
| Controller | 处理 HTTP 请求与响应,定义 API 接口 | 不得直接访问数据库,必须通过 Service 层调用 | 
| Service | 实现业务逻辑、事务管理与数据校验 | 必须通过 Repository 层访问数据库;返回 DTO 而非 Entity(除非必要) | 
| Repository | 数据库访问与持久化操作 | 继承 BaseMapper或使用 MyBatis Plus 提供的方法避免 N+1 查询问题 | 
| Entity | 映射数据库表结构 | 不得直接返回给前端(需转换为 DTO);包名统一为 entity | 
接口与实现分离
- 所有接口实现类需放在接口所在包下的 impl子包中。
五、安全与性能规范
输入校验
事务管理
- @Transactional注解仅用于 Service 层方法。
- 避免在循环中频繁提交事务,影响性能。
六、代码风格规范
命名规范
| 类型 | 命名方式 | 示例 | 
| 类名 | UpperCamelCase | UserServiceImpl | 
| 方法/变量 | lowerCamelCase | saveUser() | 
| 常量 | UPPER_SNAKE_CASE | MAX_LOGIN_ATTEMPTS | 
注释规范
- 所有类、方法、字段需添加 Javadoc 注释,并使用中文注释。
类型命名规范(阿里巴巴风格)
| 后缀 | 用途说明 | 示例 | 
| DTO | 数据传输对象 | UserDTO | 
| DO | 数据库实体对象 | UserDO | 
| BO | 业务逻辑封装对象 | UserBO | 
| VO | 视图展示对象 | UserVO | 
| Query | 查询参数封装对象 | UserQuery | 
实体类简化工具
- 使用 Lombok 注解替代手动编写 getter/setter/构造方法:
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
 
七、扩展性与日志规范
接口优先原则
- 所有业务逻辑通过接口定义(如 UserService),具体实现放在impl包中(如UserServiceImpl)。
日志记录
- 使用 @Slf4j注解代替System.out.println
八、编码原则总结
| 原则 | 说明 | 
| SOLID | 高内聚、低耦合,增强可维护性与可扩展性 | 
| DRY | 避免重复代码,提高复用性 | 
| KISS | 保持代码简洁易懂 | 
| YAGNI | 不实现当前不需要的功能 | 
| OWASP | 防范常见安全漏洞,如 SQL 注入、XSS 等 |