jc-club项目开发笔记day01
JC-Club 项目开发调试笔记
简介: 本文档记录了在开发
jc-club(技术社群) 项目过程中遇到的环境配置、架构依赖、数据库连接以及代码报错等问题的解决方案。 日期: 2026-02-07
1. Maven 与环境基础
1.1 Maven 版本号规范
在 pom.xml 中,版本号后缀有特定含义:
- SNAPSHOT: 快照版本(开发版)。表示代码处于不稳定、频繁迭代的状态。
- 例如:
0.0.1-SNAPSHOT,1.0-SNAPSHOT
- 例如:
- RELEASE: 正式发布版本。表示代码已稳定。
1.2 解决端口占用
场景: 启动 Spring Boot 时报错 Port 3005 was already in use。
解决方案 (Windows CMD):
查找占用端口的进程:
1
netstat -ano | findstr :3005
输出示例:
TCP 0.0.0.0:3005 0.0.0.0:0 LISTENING 12345(12345 是 PID)强制终止进程:
1
taskkill /PID 12345 /F
2. 项目架构与模块依赖
2.1 模块分层结构
jc-club 采用多模块 Maven 架构,各层职责如下:
1 | jc-club-subject (父工程) |
2.2 Controller 访问原理 (关键)
问题: 为什么写了 Controller 代码,启动后却访问不到接口(404)?
原因:
- Spring Boot 启动类通常在
jc-club-starter模块。 - Controller 类在
jc-club-application-controller模块。 - 如果
starter没有引入controller模块的依赖,Controller 类就不会被打包进 Classpath。 @ComponentScan扫描不到该类,就不会注册路由。
解决方法: 在 jc-club-starter/pom.xml 中显式添加依赖:
1 | <dependency> |
3. 数据库与连接池配置
3.1 MySQL 连接 URL 详解
配置文件 application.yml 中的 URL 参数极其重要:
1 | url: jdbc:mysql://localhost:3306/jc_club?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false |
| 参数 | 作用 |
|---|---|
jdbc:mysql:// |
协议头 |
localhost:3306 |
地址与端口 |
jc_club |
数据库名称 (需与建库语句一致) |
useUnicode=true |
允许使用 Unicode 字符集 |
characterEncoding=utf-8 |
防止中文乱码 |
serverTimezone=Asia/Shanghai |
时区设置 (防止存入时间差8小时) |
useSSL=false |
开发环境禁用 SSL 警告 |
3.2 Druid 连接池配置
配置连接池以优化数据库性能,并开启监控功能。
1 | spring: |
- 访问监控台:
http://localhost:3000/druid(根据 server.port 调整端口) - 账号/密码:
admin/123456
4. 常见报错与排查 (Troubleshooting)
🔴 错误 1: Unknown database ‘jc_club’
现象: 启动报错,提示找不到数据库。
原因: MySQL 中尚未创建对应的数据库,或者名字写错了(如写成
jc-club)。解决:
1
CREATE DATABASE jc_club DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔴 错误 2: HTTP 500 访问 /test 接口报错
现象: 访问测试接口报错,控制台显示
Table 'jc_club.subject_category' doesn't exist。原因: 数据库已创建,但缺少对应的表结构。
解决: 执行建表 SQL。
1
2
3
4
5
6
7
8
9
10
11
12
13CREATE TABLE subject_category (
id INT PRIMARY KEY AUTO_INCREMENT,
category_name VARCHAR(100) NOT NULL COMMENT '分类名称',
category_type INT COMMENT '分类类型',
image_url VARCHAR(500) COMMENT '图片链接',
parent_id INT COMMENT '父ID',
created_by VARCHAR(50),
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(50),
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 插入测试数据
INSERT INTO subject_category (category_name, category_type) VALUES ('后端开发', 1);
🔴 错误 3: 代码中包路径导入错误
- 现象: 编译报错或找不到类。
- 原因: IDE 自动导入了错误的包。
- 典型案例:
- DAO 层: 应该用
mapper包下的接口,而不是dao包(除非自定义了)。- ❌
import ...infra.basic.dao.SubjectCategoryDao; - ✅
import ...infra.basic.mapper.SubjectCategoryDao;
- ❌
- 分页对象: 应该用 MyBatis Plus 的 Page,而不是 Spring Data JPA 的。
- ❌
import org.springframework.data.domain.Page; - ✅
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- ❌
- DAO 层: 应该用
5. 开发常用命令速查
MySQL 命令行
1 | # 登录数据库 |
Maven 命令
1 | # 清理并安装(跳过测试) |
6. 完整调用链路图解
理解一个请求是如何从浏览器到达数据库的:
1 | graph LR |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 达芬奇的博客!
评论





