# Base Server - Spring Boot + JPA 接口框架
这是一个基于 Spring Boot 和 JPA 的后端接口框架,为 Android 应用提供用户管理相关的 REST API。
## 技术栈
- **Spring Boot 3.2.1** - 主框架
- **Spring Data JPA** - 数据持久化
- **H2 Database** - 内存数据库(开发环境)
- **MySQL** - 生产数据库(可选配置)
- **Maven** - 项目管理
- **Lombok** - 简化代码
- **Jakarta Validation** - 参数验证
## 项目结构
```
src/main/java/com/example/baseserver/
├── BaseServerApplication.java # 主启动类
├── config/
│ ├── DataInitializer.java # 数据初始化
│ └── WebConfig.java # Web配置(CORS等)
├── controller/
│ └── UserController.java # 用户控制器
├── dto/
│ ├── ApiResponse.java # 统一响应格式
│ ├── UserDTO.java # 用户数据传输对象
│ └── UserRequest.java # 用户请求对象
├── entity/
│ └── User.java # 用户实体
├── exception/
│ └── GlobalExceptionHandler.java # 全局异常处理
├── repository/
│ └── UserRepository.java # 用户数据访问层
└── service/
└── UserService.java # 用户业务逻辑层
```
## 快速开始
### 1. 环境要求
- Java 17+
- Maven 3.6+
### 2. 运行项目
```bash
# 进入项目目录
cd d:\base\server
# 编译项目
mvn clean compile
# 运行项目
mvn spring-boot:run
```
### 3. 访问应用
- **API 基础路径**: http://localhost:8080/api
- **H2 数据库控制台**: http://localhost:8080/h2-console
- **API 文档**: http://localhost:8080/api/docs(如需要可添加 Swagger)
## API 接口
### 用户管理接口
| 方法 | 路径 | 描述 |
|------|------|------|
| POST | `/api/users/register` | 用户注册 |
| POST | `/api/users/login` | 用户登录 |
| GET | `/api/users/{id}` | 获取用户信息 |
| GET | `/api/users` | 获取所有用户 |
| PUT | `/api/users/{id}` | 更新用户信息 |
| DELETE | `/api/users/{id}` | 删除用户 |
| POST | `/api/users/{id}/change-password` | 修改密码 |
### 请求示例
#### 用户注册
```bash
curl -X POST http://localhost:8080/api/users/register \
-H "Content-Type: application/json" \
-d '{
"username": "newuser",
"password": "123456",
"email": "newuser@example.com",
"nickname": "新用户",
"phone": "13800138888"
}'
```
#### 用户登录
```bash
curl -X POST http://localhost:8080/api/users/login \
-H "Content-Type: application/json" \
-d '{
"usernameOrEmail": "admin",
"password": "123456"
}'
```
#### 获取用户列表
```bash
curl -X GET http://localhost:8080/api/users
```
## 数据库配置
### 开发环境(H2 内存数据库)
默认使用 H2 内存数据库,无需额外配置。数据库控制台访问信息:
- **JDBC URL**: `jdbc:h2:mem:testdb`
- **用户名**: `sa`
- **密码**: (空)
### 生产环境(MySQL)
修改 `application.yml` 文件,取消 MySQL 配置的注释并填入实际数据库信息:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/base_server?useSSL=false&serverTimezone=UTC
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
```
## 初始数据
应用启动时会自动创建以下测试用户:
| 用户名 | 密码 | 邮箱 | 昵称 |
|--------|------|------|------|
| admin | 123456 | admin@example.com | 系统管理员 |
| testuser1 | 123456 | user1@example.com | 测试用户1 |
| testuser2 | 123456 | user2@example.com | 测试用户2 |
## Android 客户端集成
### 添加网络权限
在 Android 项目的 `AndroidManifest.xml` 中添加:
```xml
```
### 使用 Retrofit 调用 API
```java
// API 接口定义
public interface UserApi {
@POST("users/login")
Call> login(@Body LoginRequest request);
@GET("users")
Call>> getUsers();
}
// 创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://你的电脑IP:8080/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
UserApi userApi = retrofit.create(UserApi.class);
```
## 开发说明
### 密码加密
当前使用简单的字符串前缀加密方式(仅用于演示)。生产环境建议使用 BCrypt:
```java
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
```
### 添加新的实体和接口
1. 在 `entity` 包中创建实体类
2. 在 `repository` 包中创建对应的 Repository 接口
3. 在 `dto` 包中创建 DTO 类
4. 在 `service` 包中创建业务逻辑类
5. 在 `controller` 包中创建控制器类
### 日志查看
应用日志会输出到控制台,包含详细的操作信息和错误信息。
## 部署
### 打包应用
```bash
mvn clean package
```
### 运行 JAR 文件
```bash
java -jar target/base-server-1.0.0.jar
```
## 常见问题
1. **端口冲突**: 修改 `application.yml` 中的 `server.port` 配置
2. **跨域问题**: 已在 `WebConfig` 中配置 CORS,支持所有来源
3. **数据库连接**: 检查数据库配置和网络连接
## 许可证
MIT License