# 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