Uncategorized
/
Feb 08, 2026
Step 9 终章:实战演练 —— 构建简易银行账户系统
<!-- Title: 终章:实战演练 —— 构建简易银行账户系统 -->
<!-- ID: 155 -->
<!-- Series: Java 帝国:从零构建你的数字疆域 (ID: 2) -->
<!-- Author: 潘卫 -->
# 终章:实战演练 —— 构建简易银行账户系统
## 1. 战役目标
学了这么多(环境、SpringBoot、数据库、类、方法),是时候打一场**综合战役**了。
我们将构建一个简易的**银行账户系统 (Bank System)**。
**核心功能**:
1. **开户** (Create Account)
2. **存款** (Deposit)
3. **取款** (Withdraw)
4. **查询余额** (Check Balance)
## 2. 蓝图设计 (Architecture)
我们将采用标准的 **MVC 三层架构**:
1. **Controller (控制层)**:柜台。接待客户请求 (HTTP)。
2. **Service (业务层)**:经理。处理核心逻辑(比如判断余额够不够取)。
3. **Repository (数据层)**:仓库管理员。负责存取数据库 (MySQL)。
## 3. 实战步骤 (指挥 AI)
### Step 1: 实体设计 (Entity)
> **Prompt**: "创建 Spring Boot 实体类 Account。包含 id, ownerName(户主), balance(余额)。使用 JPA 注解。"
```java
@Entity
public class Account {
@Id @GeneratedValue
private Long id;
private String ownerName;
private BigDecimal balance;
// ...
}
```
### Step 2: 仓库层 (Repository)
> **Prompt**: "创建 AccountRepository 接口,继承 JpaRepository。"
### Step 3: 业务层 (Service) - 核心逻辑
> **Prompt**: "创建 AccountService。
> 1. openAccount(name, initBalance): 开户。
> 2. deposit(id, amount): 存款。
> 3. withdraw(id, amount): 取款。注意检查余额是否充足,不够抛异常。
> 4. getBalance(id): 查询余额。"
AI 会帮你写出 `if (account.getBalance().compareTo(amount) < 0) throw new RuntimeException("余额不足");` 这样的关键逻辑。
### Step 4: 控制层 (Controller) - 暴露接口
> **Prompt**: "创建 AccountController。
> 1. POST /accounts: 开户
> 2. POST /accounts/{id}/deposit: 存款
> 3. POST /accounts/{id}/withdraw: 取款
> 4. GET /accounts/{id}: 查余额
> 请调用 Service 层的方法。"
## 4. 关键难点:事务 (Transaction)
在银行系统里,最怕的是:钱扣了,记录没记上。
比如转账:A 扣钱,B 加钱。这两个动作必须**同时成功**或**同时失败**。
在 Spring 中,只需要一个注解:**`@Transactional`**。
加在 Service 方法上。
如果方法中间报错了(断电、异常),所有的数据库操作都会**回滚 (Rollback)**,就像时光倒流一样,保证钱不会丢。
## 5. 运行与测试
启动项目。
使用 **Postman** 或浏览器插件发送请求:
1. 开户:`POST /accounts?name=Pan&amount=1000` -> 返回 ID: 1
2. 取款:`POST /accounts/1/withdraw?amount=200` -> 余额剩 800
3. 取款:`POST /accounts/1/withdraw?amount=10000` -> 报错 "余额不足"
## 6. 完结撒花:你的数字疆域
恭喜你!
你从零开始,搭建环境,理解概念,运用 AI,最终构建了一个具备核心业务逻辑的后端系统。
这不仅仅是一个 Demo,这是你**数字疆域**的第一块砖。
Java 帝国辽阔无边,前方还有微服务、高并发、分布式等更宏伟的城池等待你去征服。
但此刻,请为自己鼓掌。
**你已经是一名真正的 Java 开发者了。**
P
潘卫
南京市沉思波网络科技有限责任公司创始人、CEO
您的观点 (可选)
🎁 注册账号,同步您的个性化学习路径