当前位置: 首页 > news >正文

Spring Boot快速搭建RESTful应用

Spring Boot Web 入门指南:零基础构建 RESTful 应用

Spring Boot 彻底简化了 Java Web 开发流程,让你能在 5 分钟内创建一个可运行的 Web 应用。以下是新手必学核心内容:


一、Spring Boot 核心优势

复杂配置
依赖管理
自动配置
起步依赖
内嵌容器
传统Spring
大量XML
版本冲突
Spring Boot
零XML
简化依赖
直接运行

二、5 分钟创建第一个 Web 应用

步骤 1:使用 Spring Initializr 创建项目

访问 start.spring.io 配置:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.2.x
  • Dependencies: Spring Web
  • Packaging: Jar

点击 “Generate” 下载项目压缩包

步骤 2:项目结构解析
src/
├── main/
│   ├── java/
│   │   └── com/example/demo/
│   │       ├── DemoApplication.java  // 启动类
│   │       └── controller/           // 控制器目录
│   └── resources/
│       ├── static/                   // 静态资源(CSS/JS)
│       ├── templates/                // 模板文件(Thymeleaf)
│       └── application.properties    // 配置文件
└── test/                             // 测试代码
步骤 3:编写第一个 REST 控制器

创建 HelloController.java

package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController // 标记为 REST 控制器
public class HelloController {@GetMapping("/hello") // 处理 GET 请求public String sayHello() {return "Hello Spring Boot Web!";}@GetMapping("/user")public User getUser() {return new User(1, "Alice"); // 自动转为 JSON}// 内部用户类static class User {private int id;private String name;// 构造器 + Getter 省略(实际开发需加上)}
}
步骤 4:启动应用

DemoApplication.java 右键选择:

  • Run As → Spring Boot App
  • 或使用命令:mvn spring-boot:run

控制台出现 Tomcat started on port 8080 表示成功

步骤 5:测试接口

打开浏览器访问:

  • http://localhost:8080/hello → 显示文本
  • http://localhost:8080/user → 返回 JSON:
    {"id":1, "name":"Alice"}
    

三、核心注解详解

注解作用示例
@RestController定义 REST 控制器类注解
@GetMapping处理 GET 请求@GetMapping("/path")
@PostMapping处理 POST 请求@PostMapping("/users")
@RequestMapping通用请求映射@RequestMapping("/api")
@RequestParam获取 URL 参数@RequestParam String name
@PathVariable获取路径变量@PathVariable int id
@RequestBody获取请求体 JSON 数据@RequestBody User user
@ResponseBody返回数据而非视图方法或类注解

四、实现 CRUD 接口示例

1. 创建用户模型
public class User {private Integer id;private String name;private String email;// 构造器 + Getter/Setter 省略
}
2. 实现控制器
@RestController
@RequestMapping("/api/users")
public class UserController {// 临时存储(实际应连接数据库)private final List<User> users = new ArrayList<>();private int nextId = 1;// 创建用户@PostMappingpublic User createUser(@RequestBody User user) {user.setId(nextId++);users.add(user);return user;}// 获取所有用户@GetMappingpublic List<User> getAllUsers() {return users;}// 获取单个用户@GetMapping("/{id}")public User getUserById(@PathVariable Integer id) {return users.stream().filter(u -> u.getId().equals(id)).findFirst().orElse(null); // 实际应返回404}
}
3. 使用 Postman 测试
  • POST http://localhost:8080/api/users
    Body (JSON):
    {"name": "Bob", "email": "bob@example.com"}
    
  • GET http://localhost:8080/api/users
    返回:
    [{"id":1, "name":"Bob", "email":"bob@example.com"}]
    

五、关键配置技巧

1. 修改端口号

src/resources/application.properties

server.port=9090 # 修改为9090端口
2. 自定义返回 JSON 格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
3. 开启热部署(实时生效)

添加依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope>
</dependency>

六、调试与问题排查

1. 查看自动配置报告

启动时添加参数:

java -jar demo.jar --debug

在日志中搜索 CONDITIONS EVALUATION REPORT

2. 常用端点监控
# application.properties
management.endpoints.web.exposure.include=*

访问:http://localhost:8080/actuator


七、下一步学习建议

  1. 连接数据库
    添加 spring-boot-starter-data-jpa + 数据库驱动

  2. 实现登录认证
    学习 spring-boot-starter-security

  3. 前端整合
    使用 Thymeleaf 或 Vue.js 整合

  4. 部署实战

    • 打包:mvn clean package
    • 运行:java -jar target/demo-0.0.1-SNAPSHOT.jar

新手避坑提示:遇到问题时先检查:

  1. 注解是否遗漏(如 @RestController
  2. 包结构是否正确(控制器要在启动类同级或子目录)
  3. 依赖是否完整(检查 pom.xml

Spring Boot Web 将让你体验到 Java Web 开发的"快感"——告别繁琐配置,专注业务逻辑!现在就开始你的第一个项目吧! 🚀

http://www.lryc.cn/news/584294.html

相关文章:

  • P1722 矩阵 II 题解 DFS深度优先遍历与卡特兰数(Catalan number)解
  • 【WPF实战】MVVM中如何从数据模型反查自定义控件实例(ImageView + Halcon)
  • C++类对象多态底层原理及扩展问题
  • Zotero+zotmoov+坚果云同步
  • 2023年华为杯研究生数学建模竞赛E题脑卒中临床智能分析
  • 我的世界Java版1.21.4的Fabric模组开发教程(十五)方块实体渲染器
  • 北京一家IPO业绩持续性存疑,关联交易频繁独立性堪忧
  • iOS 抓包详细教程:从零搭建、操作到实战调试的全流程指南
  • C++ -- STL -- vector
  • 北斗舞动在线监测装置:电力安全的“智慧守护者”
  • 大健康IP如何借“合规创新”抢占行业新风口|创客匠人
  • 基于Python的程序员数据分析与可视化系统的设计与实现
  • linxu内核的signal fault和arm内核的flault
  • 网络综合实验
  • Flowable21条件事件------------持续更新中
  • 【LeetCode100】--- 2.字母异位词分组【复习回顾】
  • 【LeetCode 热题 100】148. 排序链表——(解法二)分治
  • 数据结构与算法之美:广义表
  • ThinkSound V2版 - 一键给无声视频配音,为AI视频生成匹配音效 支持50系显卡 一键整合包下载
  • LeetCode 1652. 拆炸弹
  • 二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
  • 节点小宝:手机图片备份至电脑功能实测体验
  • 机器学习12——支持向量机中
  • Ubuntu 20.04 下**安装 FFmpeg 5.1
  • Lua嵌入式爬虫实现步骤
  • Redis性能基准测试
  • 观众信息设置与统计(视频高级分析与统计功能)
  • Windows下VScode配置FFmpeg开发环境保姆级教程
  • vue中token的使用与统计实践
  • 机器学习11——支持向量机上