新闻详情

新闻详情

首页 / 资讯中心 / 详情

这份 CLAUDE.md 模板,让 Claude Code 写出企业级 Java 项目

发布时间:2026/11/11 13:21:01来源:尧图网络
这份 CLAUDE.md 模板,让 Claude Code 写出企业级 Java 项目
1. 为什么你的 Claude Code 写 Java 总像实习生用 Claude Code 写 Java 代码大多数人第一步就做错了。不是不会用是根本没配 CLAUDE.md。没有这份文件的 Claude Code就像一个第一天入职的新人——聪明但什么都不知道。它不知道你的项目用 Java 21 还是 Java 17不知道你的分层规范不知道哪些写法在你们团队是禁止的。每次生成代码都在猜猜对了靠运气猜错了你来改。CLAUDE.md 是放在项目根目录的一个 Markdown 文件Claude Code 每次启动都会自动读取它把里面的内容作为上下文加载进去。它是项目的记忆系统让 AI 理解你的项目并支持自我进化。简单说它是你给 Claude Code 写的「项目说明书」告诉它这个项目用什么技术栈、代码要怎么组织、哪些写法是禁止的、遇到问题要怎么处理。这篇内容我会把一份可以直接用的 Java SpringBoot CLAUDE.md 模板完整放出来每一段说清楚为什么这么写、不写会怎样。同时给出 settings.json 接入 TaoToken 统一 Key/API 通道的配置片段并演示一次生成后校验分层结构、依赖与编译通过的验证动作。适合正在用 Claude Code 写 SpringBoot 项目、但生成代码总需要大量返工的开发者。一个合理的层次结构是这样的CLAUDE.md 每次必加载放核心禁令和架构要点.claude/skills/ 按需加载放详细规范和代码模板.claude/agents/ 放子代理处理专项任务。下面这份模板直接复制放进项目根目录的 CLAUDE.md最多改一下包名和版本号就能用。2. 前置准备TaoToken 统一 Key 与 Claude Code 接入在写 CLAUDE.md 之前先把 API 通道配好。Claude Code 需要一个稳定的模型调用入口TaoToken 提供统一的 Key 和 API 通道省去你到处切换配置的麻烦。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。你需要先拿到 API Key。登录后进入控制台在 API Keys 页面创建一个新的 Key复制保存好。这个 Key 后面会写进 Claude Code 的 settings.json 里。Claude Code 的配置文件通常放在用户目录下的 .claude/settings.json或者项目根目录的 .claude/settings.json。项目级的配置优先级更高适合团队共享。下面是一个可复制的配置片段把 ANTHROPIC_BASE_URL 指向 TaoToken 的 API 地址ANTHROPIC_AUTH_TOKEN 填你刚创建的 Key{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }这里有个细节要注意ANTHROPIC_BASE_URL 不要带末尾斜杠也不要加 UTM 参数保持干净的 API 根地址。ANTHROPIC_MODEL 按你实际订阅的模型名填写如果你不确定用哪个可以先在模型对话页面测试一下再决定。配好之后在终端里进入项目目录运行 claude 命令启动。如果配置生效Claude Code 会正常加载并等待你的输入。如果报认证错误先检查 Key 是否复制完整、有没有多余空格。3. 可复制的 CLAUDE.md 模板与 settings.json 配置下面这份模板直接复制放进项目根目录的 CLAUDE.md。每一段我都标注了为什么这么写。# CLAUDE.md — Java SpringBoot 项目规范 ## 技术栈 - Java: 21LTS 版本强制 - Spring Boot: 3.2.x - 数据库: MySQL 8.0 或 PostgreSQL 15 - 构建工具: Maven使用 ./mvnw不要直接用 mvn - 测试框架: JUnit 5 Testcontainers集成测试禁止使用 H2 ## 架构规范 ### 分层结构 src/main/java/com.company.project/ ├── controller/ # REST 端点只做参数校验和调用 service ├── service/ # 业务逻辑接口以 I 前缀命名 ├── repository/ # 数据访问继承 JpaRepository ├── model/ # JPA 实体类 ├── dto/ # 请求/响应 DTO不要把 Entity 直接暴露给 API ├── config/ # Spring 配置类 └── exception/ # 自定义异常 全局异常处理 ### 命名规范 - 包命名com.company.模块名.层级 - 类命名大驼峰Service 接口加 I 前缀如 IUserService - 方法命名小驼峰动词开头如 getUserById、createOrder - 常量命名全大写下划线分隔如 MAX_RETRY_COUNT ## 代码规范 ### Controller 层 - 使用 RestController RequestMapping - 统一返回 ResponseEntityResponseDTOT - 参数校验使用 Valid不要在 controller 里写 if 判断 - 错误响应使用 ProblemDetailSpring Boot 3.x 内置RFC 7807 标准 - URL 路径使用名词复数/users 而不是 /getUsers 正确写法 PostMapping(/users) public ResponseEntityResponseDTOUserDTO createUser( Valid RequestBody CreateUserRequest request) { return ResponseEntity.ok(ResponseDTO.success(userService.createUser(request))); } 禁止写法 PostMapping(/users) public UserDTO createUser(RequestBody CreateUserRequest request) { if (request.getName() null) { throw new RuntimeException(name is null); } return userService.createUser(request); } ### Service 层 - 使用构造器注入不要用 Autowired 字段注入 - 事务注解 Transactional 只加在 Service 实现类上不要加在接口上 - 跨服务调用不要嵌套 Transactional容易出事务穿透问题 正确写法 Service RequiredArgsConstructor public class UserServiceImpl implements IUserService { private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; } 禁止写法 Service public class UserServiceImpl implements IUserService { Autowired private UserRepository userRepository; } ### Repository 层JPA 规范 - 使用 DTO Projection 替代直接返回 Entity - 关联查询优先使用 EntityGraph 或 JPQL JOIN FETCH - 禁止在循环里调用 repository 方法N1 问题 - 分页查询必须使用 Pageable 参数 - 禁止在 OneToMany 上使用 FetchType.EAGER 正确写法 Query(SELECT new com.company.dto.UserDTO(u.id, u.name, u.email) FROM User u WHERE u.id :id) OptionalUserDTO findUserDTOById(Param(id) Long id); 禁止写法 OptionalUser findById(Long id); // 然后直接 return 给 API ### 异常处理 - 业务异常继承 BusinessException包含错误码和错误信息 - 全局异常处理使用 RestControllerAdvice - 不允许直接 throw new RuntimeException(xxx)必须使用自定义异常 - 日志记录使用 SLF4J不允许使用 System.out.println 正确写法 throw new BusinessException(ErrorCode.USER_NOT_FOUND, 用户不存在: userId); 禁止写法 throw new RuntimeException(用户不存在); ## 工作流规范 ### Plan Mode重要 任何非简单任务都必须先进入 Plan Mode写详细方案后再执行。 触发条件 - 超过 3 个步骤的任务 → Plan Mode - 涉及架构决策 → Plan Mode - 修改核心业务逻辑 → Plan Mode - 数据库 Schema 变更 → Plan Mode 工作流四阶段探索理解需求→ 计划写方案→ 实施写代码→ 提交验证 ### 每次修改后必须执行 ./mvnw test ./mvnw checkstyle:check 测试通过才能提交不允许跳过。 ## 明确禁止的模式 - 禁止直接将 Entity 暴露在 API 响应里 - 禁止在 OneToMany 上使用 FetchType.EAGER - 禁止在循环里调用数据库方法 - 禁止使用 System.out.println 输出日志 - 禁止 catch 所有异常后 log.error(失败) 就完事必须区分异常类型 - 禁止直接在 Controller 里写业务逻辑 - 禁止跳过测试提交代码 - 禁止修改已有的数据库迁移文件只能新增 ## API 设计规范 - URL 路径使用名词复数/users 而不是 /getUsers - HTTP 方法语义正确GET 查询POST 创建PUT 全量更新PATCH 部分更新DELETE 删除 - 版本管理URL 路径前缀 /api/v1/ - 分页接口返回 Page 对象包含 totalElements 和 totalPages - 所有时间字段使用 ISO 8601 格式LocalDateTime JsonFormat ## Git 提交规范 格式类型(范围): 描述 类型 - feat: 新功能 - fix: Bug 修复 - refactor: 重构不涉及功能变化 - test: 测试相关 - docs: 文档修改 - chore: 构建/配置相关 示例feat(user): 添加用户手机号绑定功能放进项目根目录后最少需要改这几处技术栈里的 Java 版本、SpringBoot 版本、数据库类型包命名 com.company.project 换成你的实际包名命名规范里 Service 接口是否加 I 前缀根据团队习惯调整禁止模式里加入你们团队特有的禁止写法。4. 验证请求生成后校验分层、依赖与编译配好 CLAUDE.md 和 settings.json 之后启动 Claude Code 验证效果。进入项目目录运行 claude然后输入一个具体需求帮我写一个用户查询接口根据 ID 查用户信息返回 UserDTO配了 CLAUDE.md 之后生成的代码应该是这样的GetMapping(/users/{id}) public ResponseEntityResponseDTOUserDTO getUserById(PathVariable Long id) { UserDTO user userService.getUserById(id); return ResponseEntity.ok(ResponseDTO.success(user)); }URL 规范复数 /users返回 ResponseDTO调用 Service 而不是直接查库异常处理交给全局异常处理器。对比没有 CLAUDE.md 时的输出差异非常明显——没配的时候它可能直接返回 Entity、抛 RuntimeException、URL 用单数、没有统一响应格式。生成之后你需要做三个验证动作。第一检查分层结构确认生成的类是否落在正确的包下controller 里有没有混入业务逻辑service 接口有没有加 I 前缀。第二检查依赖确认有没有引入不该出现的依赖比如集成测试用了 H2 而不是 Testcontainers。第三编译验证./mvnw clean compile ./mvnw test ./mvnw checkstyle:check如果编译通过、测试通过、checkstyle 通过说明这份 CLAUDE.md 的约束生效了。如果编译报错把错误信息贴回给 Claude Code让它根据 CLAUDE.md 的规范修正。实测下来配好模板后第一次生成就能编译通过的概率会高很多返工主要集中在业务逻辑细节上而不是架构和规范层面。5. 本篇常见错排查第一个常见错误是 CLAUDE.md 放错位置。它必须放在项目根目录和 pom.xml 同级。如果你放在 .claude/ 目录下Claude Code 不会自动加载。项目级的 CLAUDE.md 和用户级的 ~/.claude/CLAUDE.md 是两回事团队共享的规范要放项目根目录。第二个错误是 settings.json 里的 ANTHROPIC_BASE_URL 带了末尾斜杠或 UTM 参数。正确的写法是 https://taotoken.net/api 不要加任何多余字符。如果认证失败先检查 Key 有没有复制完整再检查 JSON 格式有没有语法错误比如多余的逗号或缺少引号。第三个错误是规范写得太模糊。「避免 N1 问题」这种表述 AI 很难执行要写成「禁止在循环里调用 repository 方法」。「代码要规范」这种话等于没说要写成具体的、可测试的规则。有效的规则是具体且可测试的把你们团队 Code Review 里反复出现的问题都写进禁止模式。第四个错误是把 Checkstyle 能管的风格问题写进 CLAUDE.md。能用工具强制的代码风格不要写进 CLAUDE.md能用静态检查发现的问题也不要写进 CLAUDE.md。CLAUDE.md 只写架构模式、业务逻辑约束、工作流指令——这些是工具检查不了、只有人和 AI 才能判断的东西。第五个错误是写完就不管了。三个触发更新的时机Code Review 里反复出现同一类问题加进禁止模式团队引入新的技术选型更新技术栈声明之前的规范被废弃删掉对应规则。CLAUDE.md 是活的文档不是一次性任务。如果你在接入过程中遇到认证或通道问题可以去 API Keys 页面重新生成 Key或者查阅接入文档确认配置格式。需要验证模型输出效果时模型对话页面可以快速测试。长期做编码和 Agent 任务的话Coding Plan 更适合高频使用场景。6. 让规范持续生效的接入方式CLAUDE.md 配好只是第一步真正让团队持续受益的是把 API 通道和规范文件都纳入版本管理。settings.json 里的 Key 不要直接提交到 Git用环境变量或者本地覆盖的方式处理。项目级的 .claude/settings.json 可以提交但把敏感字段抽出来。团队协作时CLAUDE.md 跟着项目走所有人的 AI 按同一套规范工作。新成员入职拉下代码就自带项目说明书不用再口头传达规范。Code Review 的压力也会小很多因为很多低级问题在生成阶段就被 CLAUDE.md 拦掉了。如果你还没配好 API 通道可以从 API Keys 页面创建一个 Key然后参考接入文档把 settings.json 配好。需要长期跑编码任务的Coding Plan 的额度模型更适合日常高频调用。规范文件加统一通道这两件事配好之后Claude Code 写出来的 Java 代码才真正具备企业级项目的可用性。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉