Vibe Coding一人即团队系列35: 基于Claude Code的Spring Boot项目初始化实践

纲要

  • 核心工具与环境
    • Claude Code:AI 编程助手,用于项目初始化和代码生成
    • Java 17 + Maven:后端开发环境与构建工具
    • Spring Boot:项目核心框架
  • 关键交互流程
    • 创建项目目录
    • 请求 Claude Code 初始化 Java Web 项目
    • 技术选型讨论与决策(Spring Boot + MyBatis
    • 自动生成项目结构与配置文件
    • 添加 HelloController 控制器
    • 启动项目并验证
  • 项目技术栈
    • Spring Boot Starter Web
    • MyBatis / MyBatis-Plus(推荐)
    • MySQL Driver
    • Lombok
    • Spring Boot Starter Validation
    • Spring 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 环境,若使用 .NETC++ 等亦可根据实际情况调整,但本文聚焦于 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-javaMySQL 数据库驱动
  • 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.x3.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

MyBatismapper-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 接口迭代、数据库访问层生成以及业务逻辑实现。

相关推荐
Dovis(誓平步青云)29 分钟前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能
AI人工智能+电脑小能手32 分钟前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
2601_9620652542 分钟前
从零创建一个 Django 项目
后端·python·django
吴声子夜歌1 小时前
Java——开发中通用的方法和准则(二)
java·开发语言·php
袁震1 小时前
HarmonyOS 应用包体积优化与上架自检实战:从 76.2MB 到 3.6MB
java·华为·性能优化·harmonyos
zcmodeltech1 小时前
反应装置模型控制系统设计与实现:多设备协同联动方案
java·网络·数据库·stm32·嵌入式硬件·能源·制造
Elastic 中国社区官方博客1 小时前
从建议到修复的 4 个阶段:使用 Elastic Workflows 实现人在回路中的自动化
运维·数据库·人工智能·后端·elasticsearch·ai·自动化
码视野1 小时前
基于 Spring Boot + Vue3 的【城市地下燃气管网微泄漏感知与相邻地下空间燃爆预警中台】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端
2601_962071572 小时前
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
java·开发语言·数据库