Skip to content
Back to skills

Java Code Standards

ASecurity

Java 代码生成规范引擎,约束 AI 生成代码质量(Spring Boot + Spring + MyBatis-Plus 生态)。**只要产出/修改 Java 代码就必须加载本 skill,包括零散直接写码请求("写个 XX 接口"/"写个 Controller"/"帮我写这段代码"/"实现这个功能");任何 Java 代码产物交付前,本 skill 与 comment-standards 都必须已加载**——命名/分层/异常/日志/事务/注入/SQL/安全是硬性要求,生成物不符合即返工。写 Controller/Service/ServiceImpl/Mapper/Entity/DTO/VO/Config/Utils/Exception/Enum/Constants/Converter/Validator/Security/Listener/Job 等类时按生成目标加载 01-java 对应规范;注释规则见 comment-standards skill(**未加注释 = 代码未完成,不得交付**);涉及 SQL/表设计/索引/MyBatis XML/分页 → databa...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
developmentjavasqlspringapidatabasesecurityperformance

Works with

  • api

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add soft6096/jee-forge --skill java-code-standards --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Java Code Standards?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Java Code Standards
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/soft6096-java-code-standards/badge)](https://www.skillsdirectory.com/skills/soft6096-java-code-standards)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: java-code-standards
description: Java 代码生成规范引擎,约束 AI 生成代码质量(Spring Boot + Spring + MyBatis-Plus 生态)。**只要产出/修改 Java 代码就必须加载本 skill,包括零散直接写码请求("写个 XX 接口"/"写个 Controller"/"帮我写这段代码"/"实现这个功能");任何 Java 代码产物交付前,本 skill 与 comment-standards 都必须已加载**——命名/分层/异常/日志/事务/注入/SQL/安全是硬性要求,生成物不符合即返工。写 Controller/Service/ServiceImpl/Mapper/Entity/DTO/VO/Config/Utils/Exception/Enum/Constants/Converter/Validator/Security/Listener/Job 等类时按生成目标加载 01-java 对应规范;注释规则见 comment-standards skill(**未加注释 = 代码未完成,不得交付**);涉及 SQL/表设计/索引/MyBatis XML/分页 → database-standards(通用 SQL + MyBatis-Plus 层);构建配置(pom/依赖/模块)→ build-standards;性能/并发/缓存 → 03-performance 规范;完整类 → 04-templates 模板。触发场景:生成 Java 代码、写 Java 类、Spring Boot 接口、MyBatis-Plus Mapper、SQL/建表 DDL、分页查询、认证鉴权、定时任务、消息消费、代码规范审查、无需求文档直接写码请求。WHEN NOT(不要因这些场景触发本 skill):纯 SQL/DDL/索引 → 只 database-standards;纯注释补全/审查 → 只 comment-standards;纯 pom/依赖/构建 → 只 build-standards——本 skill 不重复定义,避免多 skill 规则叠加挤占上下文。代码完成后兜底核对见 check-standards(全部核对项,含方法级注释/日志全覆盖)。
---

# Java Code Standards

约束 AI 生成 Java 代码质量的规范集。面向 Spring Boot + Spring + MyBatis-Plus 生态,按类类型/场景拆分为独立规范,按需加载。

## 强制使用流程

生成任何 Java 代码前,必须按「任务类型 → 加载矩阵」读取规范,生成后对照「自检清单」逐项核对。违反强制规则即返工。

## 按需加载原则(硬规则:防止规范挤占编码上下文)

- **精确到单文件加载**:按矩阵只读当前任务对应的规范文件(写 Controller 只读 `controller-standards.md` + `api-doc-standards.md`),**禁止把整个 `01-java/`、`04-templates/` 目录读一遍**
- `00-common/*`(4 份)是唯一全量必读组;建议加载顺序:先 01-java 对应类规范(明确写什么),再 00-common(约束怎么写)
- `04-templates/`:只读与当前生成类对应的**那一个**模板文件(如写 Service 实现只读 `ServiceImplTemplate.java`)——模板是骨架参考,不是必读全文
- `05-examples/`(完整 CRUD 示例 321 行):**仅首次搭建同类功能或不确定代码组织方式时读**,常规开发不加载
- 一次编码会话叠加的规范总量应控制在 ~1500 行内;超出时优先保 `00-common` + 当前类规范,其余按矩阵延后

## 加载矩阵

| 任务类型 | 必读 | 建议读 |
|---|---|---|
| 任意 Java 代码 | `00-common/*`(4 份)+ comment-standards `standards/comment-standards.md` | - |
| 写 Controller | `00-common/*` + `01-java/controller-standards.md` + `01-java/api-doc-standards.md`(OpenAPI 注解强制) | validator / vo / dto |
| 写 Service 接口 | `00-common/*` + `01-java/service-standards.md` | exception / enum |
| 写 Service 实现 | `00-common/*` + `01-java/service-impl-standards.md` | exception / enum |
| 写 Mapper | `00-common/*` + `01-java/mapper-standards.md`(接口结构) | database-standards `mybatis-plus/mapper-standards.md` |
| 写 Entity | `00-common/*` + `01-java/entity-standards.md` | database-standards `standards/table-design-standards.md` |
| 写 DTO / VO | `00-common/*` + 对应类规范 + `01-java/api-doc-standards.md`(字段 @Schema 强制) | converter |
| 写 Config / Utils / Enum / Constants 等 | `00-common/*` + 对应类规范 | - |
| 写 application.yml / 配置文件 / 连接池 | `01-java/application-config-standards.md` | config-standards |
| 生成项目脚手架 / 工程初始化(配置 + 公共组件) | build-standards + `01-java/application-config-standards.md` + `04-templates/`(ConfigTemplate / MyMetaObjectHandler) | database-standards `standards/table-design-standards.md` |
| 认证鉴权 / 安全 | `01-java/security-standards.md` | controller-standards |
| 写 Listener(MQ 消费) | `01-java/listener-standards.md` | database-standards `standards/pagination-standards.md` |
| 写 Job(定时任务) | `01-java/job-standards.md` | concurrency |
| 接口文档(OpenAPI/knife4j) | `01-java/api-doc-standards.md` | controller-standards |
| 分布式(锁/幂等/事务) | `01-java/distributed-standards.md` | concurrency / caching |
| 写 pom / 加依赖 / 模块结构 | build-standards(全部) | - |
| 写 SQL / 建表 DDL | database-standards `standards/sql-standards.md` + `standards/table-design-standards.md` + `standards/index-standards.md` | database-standards `standards/pagination-standards.md` |
| 写 MyBatis XML | database-standards `mybatis-plus/mybatis-xml-standards.md` | database-standards `standards/sql-standards.md` / `standards/pagination-standards.md` |
| 分页查询 | database-standards `standards/pagination-standards.md` + `mybatis-plus/pagination-example.md` | database-standards `standards/index-standards.md` |
| 性能敏感代码 | `00-common/*` + `03-performance/performance-standards.md` | concurrency / caching |
| 并发 / 锁 | `03-performance/concurrency-standards.md` | - |
| 缓存 (Redis/Caffeine) | `03-performance/caching-standards.md` | - |
| 生成完整类 | `00-common/*` + 01-java 对应规范 | `04-templates/` 对应**单个**模板文件(如 ServiceImplTemplate.java)、`05-examples/`(仅首次/不确定时) |

## 核心规范速查

### 命名(01-naming-standards.md)
- 类 UpperCamelCase,接口无 `I` 前缀,实现类 `Impl` 后缀;**禁止单字母类名**(`R` 统一返回体类名反例)
- 统一返回体固定为 `Response<T>`(code/message/data),放 `common.web`;分页用 `PageResult<T>`;禁止 `R` / `Result` / `ApiResponse`
- **包结构:每种职责独立分包,同类不混放**——`controller` / `service` / `service.impl` / `mapper` / `domain`(实体)/ `dto`(入参)/ `vo`(出参)各归其包;DTO 与 VO 必须分属 `dto`、`vo` 两个独立包,严禁 VO 放 dto 包或 DTO 放 vo 包
- 方法 lowerCamelCase 动词开头,分层前缀:Controller `get/create/update/delete`、Service `query/save/modify/remove`、Mapper `select/insert/update/delete`
- 变量名 = `[来源/角色限定] + [领域词] + [类型后缀]`,2~3 个词表达业务语义:`LoginVO loginResult`、`SysUser existingUser`、`String accessToken`、`OrderQueryDTO orderQuery`
- 变量命名反模式(命中即改):单字母(`e`/`p`)、泛称简写(`vo`/`dto`/`data`/`obj`)、类型机械小驼峰(`User user`/`Token token`)、单单词泛指(`user`/`token`/`list`/`map`)、序号命名(`user1`/`data2`)、拼音
- 同类型多变量用语义限定词区分:`cachedOrderVO`/`dbOrderVO`、`sourceOrderVO`/`targetOrderVO`、`accessToken`/`refreshToken`
- 异常处理参数禁单字母 `e`:`@ExceptionHandler(ServiceException.class)` 用 `ServiceException serviceException`;`catch (Exception exception)`
- 分页对象 `IPage<T> pageResult` / `Page<T> pageResult` 语义命名(非裸 `page`);集合字段 `recordList`(非 `records`),统一 `xxxList`/`xxxSet`/`xxxMap`
- 常量全大写 + 下划线

### 异常(03-exception-standards.md)
- 业务异常抛 `BusinessException(ErrorCode, message)`,错误码集中定义,禁止裸 `RuntimeException`
- 禁止空 catch、吞异常;资源用 try-with-resources
- Controller 不写 try/catch,全局处理器统一转换

### 日志(04-logging-standards.md)
- SLF4J 占位符 `{}`,禁止字符串拼接与 System.out;全类 `@Slf4j`(Controller/Service/Job/Listener 一律带)
- 异常日志带堆栈(最后参数传异常对象)
- 关键日志带业务上下文 ID,禁敏感信息
- **Logback 配置**:项目必须提供 `logback-spring.xml`(控制台 + 滚动文件 + 环境级 level 分离),禁止依赖默认配置裸奔(见 04-templates/logback-spring.xml)

### 注释(见 comment-standards skill)
- 全量注释:所有类(DTO/VO/Config 等,仅示例非穷举)类注释写清职责、所有变量/字段注释写清含义
- 所有方法(含测试方法)注释:功能 + @param/@return 业务含义(禁止只重复参数名)
- 方法体 ≥2 个逻辑步骤编号步骤注释(`// 1. 参数提取…`);复杂逻辑写 `// WHY:`
- 禁止逐行翻译式注释,注释与代码一致

### Service 实现(service-impl-standards.md)
- 构造器注入(`@RequiredArgsConstructor` + final 字段),禁止字段注入
- `@Transactional(rollbackFor = Exception.class)`,事务内禁止远程调用
- 并发写用乐观锁(`@Version`)或行锁,禁止无锁覆盖

### 数据访问
- SQL/表设计/索引/分页/MyBatis XML 规范见 **database-standards** skill,本 skill 只覆盖 Java 侧(Mapper 接口结构)
- Mapper 接口:继承 `BaseMapper`,方法命名 select/insert/update/delete 前缀,多参数 `@Param`,禁 Map 返回
- **自定义 SQL 一律放 XML**(`resources/mapper/XxxMapper.xml`),**禁止注解 SQL**(`@Select`/`@Insert`/`@Update`/`@Delete`/`<script>`);接口方法无实现且无 XML/BaseMapper 覆盖 = 运行期炸
- 批量操作 foreach 500~1000 一批,禁止循环单条
- **自动填充**:实体 `@TableField(fill=...)` 必须配套项目级 `MetaObjectHandler`(见 04-templates/MyMetaObjectHandler.java),缺失插入报 `Column 'create_time' cannot be null`

### 工程配置(application-config-standards.md 摘要)
- 多环境四件套:`application.yml` + `-dev` / `-qa` / `-online`,禁止单文件裸奔;profile 激活 `${SPRING_PROFILES_ACTIVE:dev}` 不写死
- HikariCP 显式池参数,禁止 datasource 三件套(url/username/password)裸奔
- JDBC URL:端口与环境实际一致(禁默认 3306 想当然);**禁写 `characterEncoding=utf8mb4`**(Connector/J 8.x 报 Unsupported character encoding),不写或写 `characterEncoding=UTF-8`

### 安全(security-standards.md)
- 接口权限注解 + 资源归属校验(防 IDOR);SQL 全参数化
- 密码慢哈希、密钥无硬编码;文件上传白名单 + 大小 + 重命名
- 敏感字段脱敏,不进日志/响应

### 分布式(distributed-standards.md)
- 分布式锁 SETNX + 过期 + 原子释放;写接口幂等(唯一键/状态位)
- 跨服务调用有超时 + 重试退避 + 熔断;分布式事务多数用最终一致

### 性能(03-performance/*)
- 禁止 N+1:批量查询后内存映射
- 线程池用 ThreadPoolExecutor 显式参数 + 命名线程工厂,禁止 Executors 快捷方法
- 缓存 Cache-Aside:写库后删缓存;防穿透(空值缓存)、击穿(互斥锁)、雪崩(TTL 抖动)

## 版权

本 skill 内容全部原创,无版权风险。规范详情见 COPYRIGHT.md。

## 自检要求

生成代码后逐项核对对应规范的「自检清单」:命名、异常、日志、事务、SQL、性能是否全部达标。违反强制规则必须修正后再交付。

Files in this skill

  • 00-common/01-naming-standards.md13.5 KB
  • 00-common/03-exception-standards.md5.5 KB
  • 00-common/04-logging-standards.md14 KB
  • 00-common/05-code-format-standards.md3.7 KB
  • 01-java/api-doc-standards.md4.7 KB
  • 01-java/application-config-standards.md11.1 KB
  • 01-java/config-standards.md3.3 KB
  • 01-java/constants-standards.md2.8 KB
  • 01-java/controller-standards.md7.5 KB
  • 01-java/converter-standards.md3.1 KB
  • 01-java/distributed-standards.md3.4 KB
  • 01-java/dto-standards.md2.7 KB
  • 01-java/entity-standards.md7 KB
  • 01-java/enum-standards.md3.7 KB
  • 01-java/exception-standards.md3.5 KB
  • 01-java/job-standards.md3.4 KB
  • 01-java/listener-standards.md3.4 KB
  • 01-java/mapper-standards.md3.5 KB
  • 01-java/security-standards.md4.6 KB
  • 01-java/service-impl-standards.md5.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.