资讯动态

2025 最新 Claude Code 教程:从安装部署到 SpringBoot 项目实战(附完整 Java 示例)

发布时间:2026/10/2 20:44:14 来源:尧图企业网站定制
1. Claude Code 在 Java 后端落地时最先卡住的其实是环境与通道Claude Code 是 Anthropic 推出的命令行编码助手能读你本地的项目文件、按上下文改代码、跑命令验证结果对 SpringBoot 这类约定大于配置的框架适配得相当顺手。它适合谁适合已经会用 Maven 和 IDEA、但被重复 CRUD 和排查日志拖住节奏的 Java 后端。它不适合谁完全没写过 Controller 的同学因为你需要能判断它生成的代码对不对。我试过把它直接接进一个已有的 SpringBoot 2.7 项目第一反应不是“哇好强”而是“怎么连不上”。原因很典型Claude Code 默认走 Anthropic 官方端点而国内开发者的网络环境、账号额度、团队 Key 管理这三件事往往凑不齐。你要么在每台机器上单独配 Key要么在 CI 里硬编码前者难维护后者有泄露风险。所以这篇教程的路线是先把 Claude Code 装好再把它的 endpoint 统一改到一个兼容 Anthropic 协议的 API 通道上用一把 Key 管住所有开发机然后拿一个真实的 SpringBoot 用户管理模块跑通“生成—落盘—启动—调接口—排错”的完整闭环。全程给出可复制的 settings 片段、Java 代码和验证命令你照着敲就能复现。核心检索词先明确Claude Code 安装部署、SpringBoot 项目实战、Java 示例代码、settings 配置、endpoint 替换。下面从环境准备开始一步步来。环境前置要求不复杂JDK 8 或以上、Maven 3.6、IntelliJ IDEA 2022Node.js 18Claude Code 的 CLI 依赖它。先确认版本避免后面报奇怪的错java -version mvn -v node -v npm -v四条命令都能打印版本号说明基础环境 OK。如果 node 版本低于 18Claude Code 启动时会直接报 engine 不匹配这一步别跳过。接着装 Claude Code CLI。官方推荐用 npm 全局安装npm install -g anthropic-ai/claude-code claude --version能打印出版本号就装好了。第一次运行claude会引导你登录或配置 API Key这里先别急着填官方 Key因为下一步我们要把通道切到统一入口避免每台机器重复配置。这里要提醒一个常见误区很多人以为 Claude Code 只是个聊天窗口其实它是能直接读写你项目目录的 Agent。你在哪个目录下启动claude它就把那个目录当成工作区。所以务必在 SpringBoot 项目的根目录有 pom.xml 的那层启动否则它读不到你的代码结构生成的代码也就对不上包名。2. TaoToken 前置把 Claude Code 的 endpoint 统一到一把 KeyClaude Code 支持通过环境变量或配置文件指定 Base URL 和 API Key这正是我们做统一通道的切入点。TaoToken 提供兼容 Anthropic 协议的 API 通道官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。你需要在控制台创建一个 Key然后把它写进 Claude Code 的配置里。先说清楚三件套这是后面所有配置的基础缺一不可Base URLhttps://taotoken.net/apiAPI Key在控制台创建的以sk-开头的字符串Model IDClaude Code 场景下填claude-sonnet-4-5这类模型标识具体以控制台模型列表为准创建 Key 的路径是控制台里的 API Keys 页面进去后点新建复制出来妥善保存页面关闭后通常不再完整显示。这一步做完你手里就有了一把可以给多台开发机、多个项目共用的 Key。接下来是 Claude Code 的配置。它读取配置的优先级是环境变量 项目级 settings 用户级 settings。团队协作推荐用项目级.claude/settings.json个人机器可以用用户级的~/.claude/settings.json。下面这段是可直接复制的 JSON路径和字段名保持原样{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的Key粘贴在这里, ANTHROPIC_MODEL: claude-sonnet-4-5 } }如果你更习惯用环境变量临时覆盖可以在 shell 里这样写适合快速验证export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的Key粘贴在这里 export ANTHROPIC_MODELclaude-sonnet-4-5注意ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY的区别前者用于自定义通道的 Bearer 鉴权后者是官方 Key 的字段。走统一通道时用ANTHROPIC_AUTH_TOKEN填错了会直接 401。配置写完后用一条命令验证通道是否通claude -p 用一句话说明你当前使用的模型如果返回了模型自述而不是报错说明 Base URL、Key、Model ID 三件套都对上了。这一步是整个教程的分水岭通道不通后面生成再多代码也跑不起来通道通了剩下的就是提示词和项目结构的事。再补一个团队场景的实用点把.claude/settings.json提交到 Git 仓库时Key 不要明文写进去。推荐做法是文件里只写 Base URL 和 Model IDKey 通过 CI 的 secret 或本地环境变量注入。这样新人 clone 下来只要配一次环境变量就能用不用挨个问 Key。3. 可复制配置SpringBoot 项目初始化与 settings 片段通道通了现在把 Claude Code 接进一个真实的 SpringBoot 项目。先在本地建目录、初始化 Maven 结构再让 Claude Code 基于上下文生成代码。这一步的关键是给它足够的约束否则它生成的包名、版本、依赖都可能和你现有项目对不上。先建项目骨架mkdir user-manage cd user-manage mkdir -p src/main/java/com/example/user/{entity,mapper,service,controller,common,config} mkdir -p src/main/resources/mapper然后在项目根目录放一个pom.xml把核心依赖钉死版本。下面这段可以直接用?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.10/version relativePath/ /parent groupIdcom.example/groupId artifactIduser-manage/artifactId version0.0.1-SNAPSHOT/version properties java.version1.8/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.5.3.1/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdorg.springframework.security/groupId artifactIdspring-security-crypto/artifactId /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build /project注意这里单独引了spring-security-crypto因为后面密码要用 BCrypt只引 web 和 mybatis-plus 是不够的这是很多人第一次跑登录接口报No bean of type BCryptPasswordEncoder的根因。接着写application.yml数据库连接按你本地实际情况改spring: datasource: url: jdbc:mysql://localhost:3306/user_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: 你的密码 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.user.entity configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl server: port: 8080建表 SQL 也先准备好让 Claude Code 有明确的字段约束CREATE TABLE t_user ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID, username varchar(50) NOT NULL COMMENT 用户名, password varchar(100) NOT NULL COMMENT 密码, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表;现在启动 Claude Code在项目根目录执行claude进入交互后把下面这段提示词贴进去。它的作用是让 Claude Code 读取你已有的 pom 和 yml按现有包结构补齐实体、Mapper、Service、Controller【上下文】当前目录是一个 SpringBoot 2.7.10 MyBatis-Plus 3.5.3.1 项目 包根路径 com.example.user已有 pom.xml 和 application.yml。 【需求】实现 t_user 表的用户管理模块字段id、username、password、create_time。 【功能】新增、按ID查询、列表查询、修改、删除。 【约束】密码用 BCrypt 加密接口返回统一 JSON遵循阿里 Java 规范 实体用 Lombok不要改动已有 pom 的依赖版本。 【输出】按文件路径逐个给出完整代码路径标注清楚。Claude Code 会按你给的包结构输出文件。它生成的实体类大致是这样package com.example.user.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDateTime; Data TableName(t_user) public class User { TableId(type IdType.AUTO) private Long id; private String username; private String password; private LocalDateTime createTime; }统一返回结果类放在 common 包package com.example.user.common; import lombok.Data; Data public class ResultT { private Integer code; private String msg; private T data; public static T ResultT success(T data) { ResultT r new Result(); r.setCode(200); r.setMsg(操作成功); r.setData(data); return r; } public static T ResultT error(String msg) { ResultT r new Result(); r.setCode(500); r.setMsg(msg); return r; } }BCrypt 的 Bean 单独放配置类避免注入失败package com.example.user.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; Configuration public class SecurityConfig { Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } }到这里项目骨架和核心配置就齐了。你会发现 Claude Code 的价值不在于“替你写”而在于它读了你现有的 pom 和 yml生成的代码能直接落进你的包结构省掉大量对齐版本和改包名的时间。4. 验证请求启动项目并跑通接口代码落盘后先编译再启动别急着调接口。编译能提前暴露依赖缺失和语法问题mvn clean compile看到BUILD SUCCESS再启动mvn spring-boot:run控制台出现Started UserManageApplication和端口 8080 就说明起来了。如果启动时报数据库连接失败先确认 MySQL 服务在跑、user_db库已建、账号密码和 yml 一致。接着用 curl 验证新增接口。先插一条数据密码字段这里先传明文实际业务里应该在 Service 层加密我们后面在登录逻辑里补curl -X POST http://localhost:8080/user/add \ -H Content-Type: application/json \ -d {username:alice,password:123456}预期返回{code:200,msg:操作成功,data:null}再查列表curl http://localhost:8080/user/list预期能看到刚插入的 alice。如果返回空数组去数据库确认t_user表里有没有数据以及 MyBatis-Plus 的mapper-locations路径对不对。现在补登录接口这是最能体现 Claude Code 上下文能力的场景。在claude交互里输入【上下文】已有 User 实体和 UserService密码字段存 BCrypt 密文。 【需求】新增 POST /user/login参数 username、password。 【逻辑】参数非空校验按 username 查用户不存在返回“用户不存在” BCrypt 匹配失败返回“密码错误”成功返回用户信息隐藏 password。 【输出】Controller 和 Service 完整代码。它生成的 Service 实现核心逻辑如下Override public ResultUser login(String username, String password) { if (username null || username.isEmpty() || password null || password.isEmpty()) { return Result.error(用户名或密码不能为空); } LambdaQueryWrapperUser qw new LambdaQueryWrapper(); qw.eq(User::getUsername, username); User user this.getOne(qw); if (user null) { return Result.error(用户不存在); } if (!passwordEncoder.matches(password, user.getPassword())) { return Result.error(密码错误); } user.setPassword(null); return Result.success(user); }重启项目后验证登录curl -X POST http://localhost:8080/user/login?usernamealicepassword123456成功会返回 alice 的信息且 password 为 null。如果返回“密码错误”说明你插入数据时存的是明文而登录时用 BCrypt 去匹配明文自然对不上。正确做法是新增用户时就用passwordEncoder.encode(password)存密文。这个坑几乎每个人都会踩一次记住存进去的必须是密文比对用matches。5. 本篇常见错排查401、local proxy failed 与 reading choices通道和代码都跑起来后剩下的时间基本花在排错上。下面这几个报错是我在 Claude Code SpringBoot 组合里遇到频率最高的逐个对照。第一个是 401。报错长这样API Error: 401 {error:{type:authentication_error,message:invalid x-api-key}}原因通常是三件套里 Key 填错或字段用错。检查.claude/settings.json里是不是把 Key 写进了ANTHROPIC_API_KEY而不是ANTHROPIC_AUTH_TOKEN。走统一通道时用后者。另外确认 Key 没有多余空格复制时容易带上换行。改完配置后重启claude配置是启动时读取的。第二个是 local proxy failed。报错类似Error: connect ECONNREFUSED 127.0.0.1:7890这说明你的 shell 里残留了指向本地代理的环境变量而那个代理没在跑。Claude Code 会读取HTTP_PROXY/HTTPS_PROXY。清掉它们再试unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy claude -p test第三个是 reading choices。报错长这样Error: reading choices: unexpected end of JSON input这通常发生在流式响应被中途截断时常见诱因是网络抖动或 Model ID 填了一个通道不支持的模型。先确认ANTHROPIC_MODEL的值和控制台模型列表一致再重试一次。如果稳定复现换一个模型标识试试。第四个是 OAuth 相关报错Error: OAuth token expired, please re-authenticate这是 Claude Code 尝试走官方 OAuth 登录流程时才会出现的。如果你已经用ANTHROPIC_AUTH_TOKEN配了统一通道理论上不该触发 OAuth。出现它说明配置没生效Claude Code 回退到了默认登录方式。检查 settings 文件路径是否正确项目级是.claude/settings.json用户级是~/.claude/settings.json文件名和层级都不能错。第五个是 Maven 依赖报错。Claude Code 生成的代码引用了spring-security-crypto但你的 pom 里没加编译就会报package org.springframework.security.crypto.bcrypt does not exist。回到第 3 节的 pom确认这个依赖在。改完 pom 后在 IDEA 里点Reload All Maven Projects或者命令行mvn -U clean compile。把这几类错误对照一遍基本能覆盖 90% 的首次接入问题。排错时记住一个原则先确认通道通不通claude -p能不能返回再确认代码能不能编译mvn compile最后才调接口。顺序反了会浪费很多时间。6. 语义一致 CTA把通道和 Key 管起来继续往下走走到这里你已经完成了 Claude Code 的安装、endpoint 替换、SpringBoot 项目初始化和接口验证。如果后面要长期在团队里用建议把 Key 管理和接入文档固定下来避免每次换机器都重新摸索。需要创建和管理 Key去控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。API Keys 页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 接入细节看文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。想先验证模型对话效果用 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。如果你打算把 Claude Code 长期用在编码和 Agent 场景Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。最后留一个实用技巧把.claude/settings.json里的 Base URL 和 Model ID 提交到仓库Key 用环境变量注入再在 README 里写一行export ANTHROPIC_AUTH_TOKEN你的Key。新人 clone 下来配一次就能跑团队里再也不用互相传 Key 了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑