hanphone-blog

Hanphone’s Blog - 后端

Spring Boot Java PostgreSQL

基于 Spring Boot 3 + JPA/MyBatis-Plus + PostgreSQL 的博客后端 API。


快速开始

环境要求

启动

cd server/

# 1. 配置环境变量
cp env.example .env
# 编辑 .env 配置数据库连接、邮箱、JWT 密钥

# 2. 创建数据库
# CREATE DATABASE blog;

# 3. 启动
mvn spring-boot:run

服务运行在 http://localhost:8090


环境变量

变量 说明 必需
TOKEN_SECRET JWT 签名密钥
PG_PASSWORD PostgreSQL 密码
EMAIL_USERNAME 邮箱用户名
EMAIL_PASSWORD 邮箱 SMTP 授权码
REDIS_PASSWORD Redis 密码

完整配置参考 env.example


部署

Maven 打包

mvn clean package
java -jar target/blog.jar --spring.profiles.active=prod

Docker 部署(推荐)

# 一键启动 PostgreSQL + Redis + 后端
docker compose up -d

详细说明: DOCKER_DEPLOYMENT.md


项目结构

server/
├── .mvn/
│   └── wrapper/                        # Maven Wrapper 配置
├── migrations/                         # 数据库迁移脚本
├── src/
│   ├── main/
│   │   ├── java/com/example/blog/
│   │   │   ├── config/                 # 配置类 (Swagger, 定时任务, Jackson)
│   │   │   ├── constants/              # 常量定义
│   │   │   ├── dao/                    # 数据访问层 (JPA Repository)
│   │   │   ├── DTO/                    # 数据传输对象
│   │   │   ├── enums/                  # 枚举类型
│   │   │   ├── filter/                 # 过滤器 (XSS, URL 长度校验)
│   │   │   ├── handler/                # 全局异常处理
│   │   │   ├── interceptor/            # 拦截器 (JWT Token)
│   │   │   ├── po/                     # 实体类
│   │   │   ├── service/
│   │   │   │   └── impl/               # 业务逻辑实现类
│   │   │   ├── util/                   # 工具类
│   │   │   ├── vo/                     # 视图对象
│   │   │   └── web/
│   │   │       └── admin/              # 管理员接口控制器
│   │   └── resources/
│   │       └── application.properties  # 应用配置文件
│   └── test/
│       └── java/com/example/blog/
│           ├── constants/              # 常量测试
│           ├── po/                     # 实体类测试
│           ├── util/                   # 工具类测试
│           └── web/                    # 接口测试
├── test.py                             # 安全 & 功能回归测试 (Python)
├── stress_test.py                      # 压力测试 (Python)
├── docker-compose.yml
├── Dockerfile
└── pom.xml