纲要
- 核心工具与环境
Claude Code:AI 编程助手,用于项目初始化和代码生成Java17 +Maven:后端开发环境与构建工具Spring Boot:项目核心框架
- 关键交互流程
- 创建项目目录
- 请求
Claude Code初始化Java Web项目 - 技术选型讨论与决策(
Spring Boot+MyBatis) - 自动生成项目结构与配置文件
- 添加
HelloController控制器 - 启动项目并验证
- 项目技术栈
Spring Boot Starter WebMyBatis/MyBatis-Plus(推荐)MySQL DriverLombokSpring Boot Starter ValidationSpring Boot Maven Plugin
- 核心配置文件
pom.xml(Maven 依赖管理)application.yml/application.properties(Spring Boot 配置)MyBatis相关配置
环境准备与项目初始化
在开始编码之前,首先需要准备项目的基础环境。本实践采用 Claude Code 作为 AI 辅助工具,直接从对话中完成 Java Web 项目的初始化。
创建一个新的项目目录,用于存放后端代码。该目录将作为 Java 工程的工作空间。
bash
mkdir financial-manager-backend
cd financial-manager-backend
此处使用 Java 作为开发语言,若采用 Python 可对应调整为 Python 环境,若使用 .NET 或 C++ 等亦可根据实际情况调整,但本文聚焦于 Java 生态。
技术选型与交互决策
进入项目目录后,通过 Claude Code 发起初始化请求。输入指令,要求其初始化一个 Java Web 项目,并明确该项目需要具备 API 通信能力,后续将为"财务管家"业务提供接口服务。
关键指令如下:
- 初始化一个
Java Web项目 - 技术选型由
Claude Code提供建议并供开发者选择 - 项目目标:为"财务管家"提供相关的 RESTful API
Claude Code 根据当前主流技术栈推荐了以下几种方案:
| 推荐方案 | 技术栈 | 适用场景 |
|---|---|---|
| 方案一(推荐) | Spring Boot + MyBatis |
轻量级、国内使用广泛,适合快速开发 |
| 方案二 | Spring Boot + MyBatis-Plus |
在 MyBatis 基础上增强,提供更多便捷功能 |
| 方案三 | Spring Boot + JPA |
适合对象关系映射需求较强的项目 |
考虑到国内生态与开发效率,最终选择 Spring Boot + MyBatis 方案,并提交确认。
项目结构与核心文件解析
Claude Code 在完成技术选型后,自动生成完整的项目结构,并拉取所需依赖。默认采用的构建工具为 Maven,JDK 版本为 17。
生成的目录结构如下:
dir
financial-manager-backend/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── financemanager/
│ │ │ └── FinancialManagerApplication.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── mapper/
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── financemanager/
│ └── FinancialManagerApplicationTests.java
└── target/
pom.xml 文件包含了项目的基础坐标、依赖管理和构建插件配置。核心依赖包括:
spring-boot-starter-web:提供 Web 层支持与 RESTful API 能力mybatis-spring-boot-starter:集成MyBatis框架mysql-connector-java:MySQL数据库驱动lombok:简化 Java Bean 代码spring-boot-starter-validation:提供参数校验框架spring-boot-starter-test:提供单元测试支持spring-boot-maven-plugin:用于打包与运行
Claude Code 不仅生成了基础骨架,还自动添加了 MySQL 数据源配置和 MyBatis 相关配置项。application.yml 文件中已包含数据库连接池、驱动类、URL 等基础配置模板,便于后续开发直接对接数据库。
核心配置与依赖说明
以下是 pom.xml 中关键依赖的坐标定义。该配置可直接运行,适用于 Spring Boot 2.7.x 或 3.x 版本。
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
以下是 application.yml 中的基础数据源配置示例,Claude Code 已自动生成占位配置:
yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/finance_db?useSSL=false&serverTimezone=UTC
username: root
password: 123456
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.financemanager.entity
MyBatis 的 mapper-locations 指定了 XML 映射文件存放路径,type-aliases-package 用于实体类别名扫描。
开发第一个 RESTful 接口
项目编译成功后,Claude Code 默认未提供具体的 Controller 示例。此时需要手动添加一个 HelloController 控制器,用于验证项目是否启动正常,并测试 API 通信能力。
在 src/main/java/com/example/financemanager/controller/ 目录下创建 HelloController.java:
java
package com.example.financemanager.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 基础测试控制器
* 用于验证项目初始化是否成功
*/
@RestController
@RequestMapping("/api/hello")
public class HelloController {
/**
* 返回简单的 Hello World 信息
* @return 欢迎信息
*/
@GetMapping
public String sayHello() {
return "Hello, Financial Manager API is running!";
}
}
该控制器通过 @RestController 标记为 REST 风格组件,@RequestMapping("/api/hello") 指定了基础路由。@GetMapping 处理 GET 请求,直接返回字符串,便于在浏览器中直接访问验证。
项目启动与验证
Spring Boot 内置了 Tomcat 服务器,无需额外部署。项目可通过 Maven 插件直接运行:
bash
mvn spring-boot:run
或在 IDE 中直接运行 FinancialManagerApplication 主类。启动成功后,控制台会打印 Spring Boot 启动日志,并显示端口号(默认为 8080)。
在浏览器中访问 http://localhost:8080/api/hello,即可看到返回结果。若页面显示 Hello, Financial Manager API is running!,则说明项目初始化成功,环境配置无误。
Tomcat Maven ClaudeCode 开发者 Tomcat Maven ClaudeCode 开发者 #mermaid-svg-EDAGzsQn0ULD8ecA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EDAGzsQn0ULD8ecA .error-icon{fill:#552222;}#mermaid-svg-EDAGzsQn0ULD8ecA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EDAGzsQn0ULD8ecA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EDAGzsQn0ULD8ecA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EDAGzsQn0ULD8ecA .marker.cross{stroke:#333333;}#mermaid-svg-EDAGzsQn0ULD8ecA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EDAGzsQn0ULD8ecA p{margin:0;}#mermaid-svg-EDAGzsQn0ULD8ecA .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-EDAGzsQn0ULD8ecA text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-EDAGzsQn0ULD8ecA .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-EDAGzsQn0ULD8ecA .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-EDAGzsQn0ULD8ecA #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-EDAGzsQn0ULD8ecA .sequenceNumber{fill:white;}#mermaid-svg-EDAGzsQn0ULD8ecA #sequencenumber{fill:#333;}#mermaid-svg-EDAGzsQn0ULD8ecA #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-EDAGzsQn0ULD8ecA .messageText{fill:#333;stroke:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-EDAGzsQn0ULD8ecA .labelText,#mermaid-svg-EDAGzsQn0ULD8ecA .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .loopText,#mermaid-svg-EDAGzsQn0ULD8ecA .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-EDAGzsQn0ULD8ecA .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-EDAGzsQn0ULD8ecA .noteText,#mermaid-svg-EDAGzsQn0ULD8ecA .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-EDAGzsQn0ULD8ecA .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-EDAGzsQn0ULD8ecA .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-EDAGzsQn0ULD8ecA .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-EDAGzsQn0ULD8ecA .actorPopupMenu{position:absolute;}#mermaid-svg-EDAGzsQn0ULD8ecA .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-EDAGzsQn0ULD8ecA .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-EDAGzsQn0ULD8ecA .actor-man circle,#mermaid-svg-EDAGzsQn0ULD8ecA line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-EDAGzsQn0ULD8ecA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 请求初始化 Java Web 项目 提供技术选型建议 确认 Spring Boot + MyBatis 生成 pom.xml 并拉取依赖 输出项目目录结构与配置 添加 HelloController 执行 mvn spring-boot:run 启动内嵌服务器 应用启动成功,监听 8080 端口 GET /api/hello 返回 Hello World 响应
参考文档
官方文档
参考链接
总结
本文详细演示了通过 Claude Code 从零初始化一个 Spring Boot + MyBatis 项目的过程,涵盖了环境准备、技术选型、项目结构生成、核心依赖配置、首个 Controller 控制器编写以及项目启动验证。Claude Code 能够自动化完成 Maven 项目骨架构建、依赖引入和基础配置文件生成,显著降低项目搭建的门槛。
在整个流程中,开发者仅需进行技术方案确认和少量代码补充,即可获得一个可运行的 Java Web 服务。后续开发可继续借助 Claude Code 完成 API 接口迭代、数据库访问层生成以及业务逻辑实现。