# spring-demo **Repository Path**: theshyxin/spring-demo ## Basic Information - **Project Name**: spring-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot Demo 项目 > 一个面向 Django 开发者的 Spring Boot 入门示例项目。 > > 本项目代码中所有文件都包含详细的中文注释,并与 **Python/Django** 做了类比说明,帮助你快速理解 Java Web 开发。 --- ## 一、项目简介 这是一个最简化的 **Spring Boot Web** 项目,演示了: - 基本的 RESTful API 接口开发 - URL 查询参数和路径变量的获取 - POJO 对象与 JSON 的自动转换 - 静态资源服务 - 集成测试 ### Django 开发者一句话理解 > 这个项目 ≈ Django 项目去掉了数据库 ORM 和 Admin 后台,只保留了 `views.py` + `urls.py` + `settings.py` + `runserver`。 --- ## 二、技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Java | 1.8 | 编程语言 | | Spring Boot | 2.6.13 | Web 应用框架(类比 Django) | | Maven | - | 构建与依赖管理工具(类比 pip + setuptools) | | JUnit 5 | - | 测试框架(类比 pytest) | --- ## 三、项目结构 ``` demo/ ├── .vscode/ # VS Code 配置文件(运行、调试、任务) ├── src/ │ ├── main/ │ │ ├── java/com/example/demo/ │ │ │ ├── demos/web/ │ │ │ │ ├── BasicController.java # 基础接口控制器 │ │ │ │ ├── PathVariableController.java # 路径变量演示 │ │ │ │ └── User.java # 用户实体类(POJO) │ │ │ └── DemoApplication.java # 应用入口(main 方法) │ │ └── resources/ │ │ ├── static/ │ │ │ └── index.html # 静态页面 │ │ └── application.properties # 配置文件 │ └── test/ │ └── java/com/example/demo/ │ └── DemoApplicationTests.java # 集成测试 ├── pom.xml # Maven 配置(类比 requirements.txt) └── README.md # 本文件 ``` ### 与 Django 的目录对比 | Spring Boot 文件/目录 | Django 对应项 | 作用 | |----------------------|--------------|------| | `pom.xml` | `requirements.txt` + `setup.py` | 依赖管理与项目元数据 | | `src/main/resources/application.properties` | `settings.py` | 应用配置文件 | | `src/main/java/.../demos/web/` | `views.py` + `urls.py` | 控制器与路由 | | `src/main/resources/static/` | `static/` | 静态文件(CSS/JS/图片) | | `src/test/java/.../` | `tests.py` | 单元/集成测试 | | `DemoApplication.java` | `manage.py` + `wsgi.py` | 应用启动入口 | | `target/` | `__pycache__/` | 编译输出目录 | --- ## 四、快速开始 ### 环境要求 - **JDK 1.8** 或更高版本(需要配置 `JAVA_HOME` 环境变量) - **Maven**(或 VS Code 的 Maven for Java 扩展) - **VS Code**(推荐,已配置好 `.vscode/`) ### 启动项目 #### 方式一:VS Code(推荐) 1. 用 VS Code 打开项目根目录 2. 安装推荐的扩展(右下角会提示) 3. 打开 `DemoApplication.java`,按 **`F5`** 运行调试,或按 **`Ctrl+F5`** 直接运行 4. 看到 `Started DemoApplication in x.x seconds` 即启动成功 #### 方式二:命令行 ```bash # 编译并运行(最常用,类似 python manage.py runserver) mvn spring-boot:run # 或者先打包,再运行 mvn package java -jar target/demo-0.0.1-SNAPSHOT.jar ``` #### 方式三:VS Code Maven 任务 按 `Ctrl+Shift+P` → 输入 `Tasks: Run Task` → 选择 `Maven: 运行 Spring Boot 应用 (spring-boot:run)` --- ## 五、API 接口一览 启动后访问 `http://localhost:8080` | 接口地址 | 请求方式 | 参数 | 响应示例 | 说明 | |---------|---------|------|---------|------| | `/hello` | GET | `?name=xxx` | `Hello xxx` | 获取查询参数 | | `/user` | GET | 无 | `{"name":"theonefx","age":666}` | 返回 JSON 对象 | | `/save_user` | GET | `?name=xxx&age=18` | `user will save: name=xxx, age=18` | 自动表单绑定到对象 | | `/html` | GET | 无 | HTML 页面 | 返回静态视图 | | `/user/{userId}/roles/{roleId}` | GET | 路径变量 | `User Id : 123 Role Id : 222` | 从 URL 路径中提取变量 | | `/javabeat/{regexp1}` | GET | 正则约束路径 | `URI Part : somewords` | 路径变量带正则验证 | ### 测试示例 ```bash # 1. 带参数的问候接口 curl "http://localhost:8080/hello?name=张三" # 2. 获取用户 JSON curl "http://localhost:8080/user" # 3. 保存用户(自动绑定参数到对象) curl "http://localhost:8080/save_user?name=李四&age=25" # 4. 路径变量 curl "http://localhost:8080/user/123/roles/456" ``` --- ## 六、Spring Boot vs Django 核心概念对照 | 概念 | Spring Boot (Java) | Django (Python) | |------|-------------------|-----------------| | **框架定位** | 企业级全栈/微服务框架 | 全功能 Web 框架 | | **依赖管理** | Maven / Gradle | pip + requirements.txt | | **项目配置** | `application.properties` / `application.yml` | `settings.py` | | **路由定义** | `@RequestMapping("/path")` 注解在方法上 | `urls.py` 中的 `path()` | | **视图/控制器** | `@Controller` 标记的类 | `views.py` 中的函数/类 | | **获取 GET 参数** | `@RequestParam(name="key")` | `request.GET.get('key')` | | **获取 URL 路径参数** | `@PathVariable("id")` | `path('')` 位置参数 | | **返回 JSON** | 直接返回对象 + `@ResponseBody` | `JsonResponse(data)` | | **返回 HTML 页面** | 返回视图名字符串 | `render(request, 'template.html')` | | **模型/实体** | POJO / `@Entity` (JPA) | `models.Model` | | **数据库 ORM** | Spring Data JPA / MyBatis | Django ORM | | **启动入口** | `main()` 方法 + `SpringApplication.run()` | `manage.py runserver` | | **测试框架** | JUnit 5 + `@SpringBootTest` | pytest / `django.test` | | **自动重载** | Spring Boot DevTools(热部署) | 开发服务器自带重载 | | **请求/响应对象** | 方法参数直接注入(隐式) | 显式的 `request` 参数 | --- ## 七、VS Code 开发指南 本项目已配置好 `.vscode/` 目录,包含: - **`settings.json`**:Java 编译、格式化、文件排除等设置 - **`launch.json`**:一键运行/调试 Spring Boot 应用(F5) - **`tasks.json`**:Maven 常用命令快捷入口 - **`extensions.json`**:推荐安装的扩展清单 ### 推荐安装的 VS Code 扩展 | 扩展名 | 用途 | |--------|------| | Extension Pack for Java | Java 语言支持、调试、Maven 集成 | | Spring Boot Extension Pack | Spring Boot 专属工具、Dashboard | | GitLens | Git 历史与代码作者查看 | 安装扩展后,左侧会出现 **Spring Boot Dashboard** 面板,可以图形化地启动/停止应用、查看端点等。 --- ## 八、Maven 常用命令速查 | 命令 | 作用 | Django 类比 | |------|------|------------| | `mvn compile` | 编译源代码 | — | | `mvn test` | 运行测试 | `python manage.py test` | | `mvn package` | 编译 + 测试 + 打包 jar | `python setup.py sdist` | | `mvn spring-boot:run` | 启动开发服务器 | `python manage.py runserver` | | `mvn clean` | 删除编译产物 | 删除 `__pycache__` | | `mvn clean compile` | 清理后重新编译 | — | --- ## 九、下一步学习建议 1. **添加数据库**:引入 `spring-boot-starter-data-jpa`,用 `@Entity` 将 `User` 变为数据库实体(类比 Django Model) 2. **RESTful 规范**:使用 `@RestController` + `@GetMapping/@PostMapping` 替代 `@Controller` + `@RequestMapping` 3. **服务层**:添加 `@Service` 层处理业务逻辑(类比 Django 的 `services.py`) 4. **统一响应**:封装统一的 JSON 响应格式(类似 Django REST framework 的 Response) 5. **异常处理**:添加 `@ControllerAdvice` 全局异常处理器 6. **配置切换**:学习 `application-dev.properties` 和 `application-prod.properties`(类比 Django 的 `settings/dev.py`) --- ## 十、参考资源 - [Spring Boot 官方文档](https://docs.spring.io/spring-boot/docs/2.6.13/reference/htmlsingle/) - [Spring Web 官方指南](https://spring.io/guides/gs/rest-service/) - [Maven 官方文档](https://maven.apache.org/guides/index.html) --- > 祝你学习愉快!如有疑问,代码中所有关键位置都附有中文注释和 Django 类比说明,可随时查阅。