Spring Boot 项目在AI编程软件Kiro等的通用代码规范 Hook 示例
一、规范概述
以下规范适用于任何 Spring Boot + Java 项目,与具体业务无关,聚焦于命名规范、分层架构约定、代码风格三个维度。
二、通用规范清单
命名规范
| 类名 | 大驼峰(PascalCase) | UserService, OrderController |
| 方法名 | 小驼峰(camelCase) | getUserById, createOrder |
| 变量名 | 小驼峰(camelCase) | userName, orderList |
| 常量 | 全大写 + 下划线 | MAX_RETRY_COUNT, DEFAULT_PAGE_SIZE |
| 包名 | 全小写,单词间用 . 分隔 | com.example.user.service |
| 数据库字段 | 下划线命名(snake_case) | create_time, user_name |
| 禁止拼音 | 不得使用拼音或拼音缩写命名 | ❌ yonghu → ✅ user |
分层架构命名约定
| Controller | Controller | UserController |
| Service 接口 | Service | UserService |
| Service 实现 | ServiceImpl | UserServiceImpl |
| 数据访问 | Mapper 或 Repository | UserMapper |
| 数据传输对象 | Dto | UserQueryDto |
| 视图对象 | Vo | UserDetailVo |
| 持久化实体 | Entity 或 Po | UserEntity |
| 配置类 | Config | RedisConfig |
| 工具类 | Utils 或 Helper | DateUtils |
| 枚举类 | Enum | OrderStatusEnum |
| 异常类 | Exception | BusinessException |
方法命名前缀约定
| 查询单个 | get / find | getUserById |
| 查询列表 | list / query | listByCondition |
| 分页查询 | page | pageUsers |
| 新增 | create / add / save | createUser |
| 更新 | update / modify | updatePassword |
| 删除 | delete / remove | deleteById |
| 判断 | is / has / can | isExpired |
| 转换 | to / convert | toDto, convertToVo |
| 校验 | validate / check | validateParam |
代码风格
| 注释语言 | 类注释、方法注释使用中文 |
| 类注释 | 必须包含 @author 和功能描述 |
| 方法注释 | 公共方法必须有 Javadoc |
| 魔法值 | 禁止直接使用魔法数字/字符串,必须定义为常量 |
| 返回值 | Controller 统一使用包装类(如 Result<T>) |
| 异常处理 | 使用全局异常处理器,禁止 Controller 中 try-catch |
| 日志 | 使用 @Slf4j 注解,禁止 System.out.println |
| 空判断 | 集合判空用 CollectionUtils.isEmpty(),字符串用 StringUtils.isBlank() |
三、Kiro Hook 文件示例
文件路径:.kiro/hooks/springboot-code-standards.kiro.hook
{
"enabled": true,
"name": "Spring Boot Code Standards",
"version": "1.0.0",
"description": "Spring Boot 项目通用代码规范检查,在 AI 写入 Java 代码前自动审查命名、分层约定和代码风格。",
"when": {
"type": "preToolUse",
"toolTypes": ["write"]
},
"then": {
"type": "askAgent",
"prompt": "在写入 Java/Spring Boot 代码前,请逐项检查以下规范:\\n\\n【命名规范】\\n1. 类名使用大驼峰(PascalCase)\\n2. 方法名和变量名使用小驼峰(camelCase)\\n3. 常量使用全大写加下划线(如 MAX_RETRY_COUNT)\\n4. 包名全小写\\n5. 数据库相关字段使用 snake_case\\n6. 禁止使用拼音命名\\n\\n【分层命名约定】\\n7. Controller 层:XxxController\\n8. Service 层:接口 XxxService,实现类 XxxServiceImpl\\n9. 数据访问层:XxxMapper 或 XxxRepository\\n10. DTO/VO/Entity 后缀正确(Dto/Vo/Entity)\\n11. 配置类后缀 Config,工具类后缀 Utils\\n12. 枚举类后缀 Enum,异常类后缀 Exception\\n\\n【方法命名前缀】\\n13. 查询:get/find/list/query/page\\n14. 新增:create/add/save\\n15. 更新:update/modify\\n16. 删除:delete/remove\\n17. 判断:is/has/can\\n\\n【代码风格】\\n18. 注释使用中文,公共方法必须有 Javadoc\\n19. 禁止魔法值,必须定义常量\\n20. Controller 统一返回包装类型 Result<T>\\n21. 使用 @Slf4j 记录日志,禁止 System.out\\n22. 集合判空用 CollectionUtils,字符串判空用 StringUtils\\n23. 异常交由全局处理器,Controller 中不写 try-catch\\n\\n如发现不符合规范的地方,请修正后再写入。"
}
}
四、跨 AI 工具复用
同样的规则内容可以直接用于其他 AI 编程工具:
GitHub Copilot
文件路径:.github/copilot-instructions.md
# Spring Boot Coding Standards
## Naming
– Class: PascalCase (UserService, OrderController)
– Method/Variable: camelCase (getUserById, orderList)
– Constant: UPPER_SNAKE_CASE (MAX_RETRY_COUNT)
– Package: all lowercase (com.example.user.service)
– DB fields: snake_case (create_time)
– No pinyin naming allowed
## Layer Conventions
– Controller: XxxController
– Service interface: XxxService / impl: XxxServiceImpl
– Mapper: XxxMapper or XxxRepository
– DTO: XxxDto / VO: XxxVo / Entity: XxxEntity
– Config: XxxConfig / Utils: XxxUtils / Enum: XxxEnum
## Method Prefix
– Query: get/find/list/query/page
– Create: create/add/save
– Update: update/modify
– Delete: delete/remove
– Boolean: is/has/can
## Code Style
– Comments in Chinese, Javadoc for public methods
– No magic numbers/strings — use constants
– Controller returns Result<T>
– Use @Slf4j, no System.out.println
– Use CollectionUtils.isEmpty() / StringUtils.isBlank()
– Global exception handler, no try-catch in Controller
Cursor
文件路径:.cursorrules
内容与上面 Copilot 的 Markdown 相同即可,Cursor 会自动读取项目根目录的 .cursorrules 文件。
五、总结
| 适用范围 | 任何 Spring Boot + Java 项目 |
| 与业务无关 | 仅约束命名、分层、风格,不涉及业务逻辑 |
| 主要作用 | 保证团队代码风格一致,减少 Code Review 中的低级问题 |
| 复用方式 | 规则内容一份维护,按格式输出到各 AI 工具的配置文件 |