Java程序开发之Spring Boot快速入门:5分钟搭建RESTful API


一、Spring Boot核心优势速览

1. 传统Spring vs Spring Boot对比

特性 Spring Spring Boot
配置方式 XML/Java Config 自动配置
内嵌服务器 需手动部署 Tomcat/Jetty内置
依赖管理 手动指定 Starter POMs
监控 需集成第三方 Actuator内置
启动速度 较慢 秒级启动

二、5分钟极速开发实战

1. 创建项目(使用Spring Initializr)

  1. 访问 start.spring.io
  2. 选择配置:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.0.5
    • Dependencies: Spring Web, DevTools
  3. 点击Generate下载项目

2. 编写第一个REST控制器

java 复制代码
@RestController  
@RequestMapping("/api")  
public class HelloController {  

    @GetMapping("/hello")  
    public String sayHello(@RequestParam(required = false) String name) {  
        return "Hello, " + (name != null ? name : "Spring Boot");  
    }  

    @PostMapping("/users")  
    public User createUser(@RequestBody User user) {  
        return userService.save(user);  
    }  
}  

// 实体类  
public record User(Long id, String name, String email) {}  

3. 运行与测试

bash 复制代码
mvn spring-boot:run  
# 访问 http://localhost:8080/api/hello?name=CSDN  

三、自动配置与进阶功能

1. 自动装配原理图解

启动类@SpringBootApplication @EnableAutoConfiguration 扫描META-INF/spring.factories 加载自动配置类 条件装配Bean

2. 常用Starter依赖说明

Starter 功能 包含技术
spring-boot-starter-web Web开发 Tomcat, Spring MVC
spring-boot-starter-data-jpa 数据库操作 Hibernate, HikariCP
spring-boot-starter-security 安全认证 Spring Security
spring-boot-starter-test 单元测试 JUnit, Mockito

四、数据库集成与REST API增强

1. 添加JPA与H2数据库

xml 复制代码
<!-- pom.xml -->  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-data-jpa</artifactId>  
</dependency>  
<dependency>  
    <groupId>com.h2database</groupId>  
    <artifactId>h2</artifactId>  
    <scope>runtime</scope>  
</dependency>  

2. 定义实体与Repository

java 复制代码
@Entity  
public class User {  
    @Id  
    @GeneratedValue  
    private Long id;  
    private String name;  
    private String email;  
    // getters/setters  
}  

public interface UserRepository extends JpaRepository<User, Long> {}  

3. 编写CRUD API

java 复制代码
@RestController  
@RequestMapping("/api/users")  
public class UserController {  

    private final UserRepository repository;  

    @GetMapping  
    public List<User> getAllUsers() {  
        return repository.findAll();  
    }  

    @GetMapping("/{id}")  
    public User getUserById(@PathVariable Long id) {  
        return repository.findById(id)  
               .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));  
    }  
}  

五、API文档生成(Swagger集成)

1. 添加OpenAPI依赖

xml 复制代码
<dependency>  
    <groupId>org.springdoc</groupId>  
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>  
    <version>2.1.0</version>  
</dependency>  

2. 访问文档界面

启动后访问:


六、生产级部署与监控

1. 打包与运行

bash 复制代码
mvn clean package  
java -jar target/demo-0.0.1-SNAPSHOT.jar  

2. 健康检查与监控

bash 复制代码
# 查看健康状态  
curl http://localhost:8080/actuator/health  

# 查看环境配置  
curl http://localhost:8080/actuator/env  

3. Docker化部署

dockerfile 复制代码
FROM eclipse-temurin:17-jdk-alpine  
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar  
ENTRYPOINT ["java","-jar","/app.jar"]  

七、常见问题与解决方案

1. 启动失败:端口冲突

properties 复制代码
# application.properties  
server.port=8081  

2. 依赖冲突

bash 复制代码
mvn dependency:tree > deps.txt  # 分析依赖树  

3. 热部署失效

properties 复制代码
# 开启自动重启  
spring.devtools.restart.enabled=true  

相关推荐
jeffer_liu5 分钟前
Spring AI 生产级实战-Spring AI 概念速通
人工智能·spring boot·spring·语言模型·ai编程
人工智能训练10 分钟前
冬日“冻”机无解?联想ThinkPad低温保护无法开机,双电池+BIOS放电终极攻略
java·服务器·ubuntu·docker·电脑·开机·电脑维修
自燃人~11 分钟前
10 亿条数据排序:外部排序与 10 路归并完整说明
java·面试
我命由我1234516 分钟前
Android 控件 - 悬浮常驻文本交互(IBinder 实现、BroadcastReceiver 实现)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
毕设源码-钟学长19 分钟前
【开题答辩全过程】以 基于JSP技术的健康信息网站的设计与实现为例,包含答辩的问题和答案
java·开发语言
m0_5981772320 分钟前
SQL(进阶-2)- 存储过程
java·数据库·sql
醒过来摸鱼23 分钟前
redisson可重入锁
java·开发语言
Coder_Boy_33 分钟前
基于SpringAI的智能考试系统设计总结 续
人工智能·spring boot·算法
独自归家的兔38 分钟前
Spring Boot核心注解深度解析(附面试高频考点)
java·spring boot·面试
AM越.44 分钟前
Java设计模式超详解--策略设计模式(含uml图)
java·设计模式·uml