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

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


一、Spring Boot核心优势速览

1. 传统Spring vs Spring Boot对比

特性SpringSpring 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控制器

@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. 运行与测试

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-webWeb开发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数据库

<!-- 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

@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

@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依赖

<dependency>  
    <groupId>org.springdoc</groupId>  
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>  
    <version>2.1.0</version>  
</dependency>  

2. 访问文档界面

启动后访问:

  • API文档:http://localhost:8080/swagger-ui.html
  • OpenAPI定义:http://localhost:8080/v3/api-docs

六、生产级部署与监控

1. 打包与运行

mvn clean package  
java -jar target/demo-0.0.1-SNAPSHOT.jar  

2. 健康检查与监控

# 查看健康状态  
curl http://localhost:8080/actuator/health  

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

3. Docker化部署

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

七、常见问题与解决方案

1. 启动失败:端口冲突

# application.properties  
server.port=8081  

2. 依赖冲突

mvn dependency:tree > deps.txt  # 分析依赖树  

3. 热部署失效

# 开启自动重启  
spring.devtools.restart.enabled=true  

相关文章:

  • angular中下载接口返回文件
  • Qt的QMenu 和 QAction的样式设置
  • 骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚
  • 计算机毕业设计:ktv点歌系统
  • 使用arm嵌入式编译器+makefile编译管理keil项目
  • openai agents SDK原理详解
  • golang从入门到做牛马:第十六篇-Go语言`range`:循环遍历的“瑞士军刀”
  • PID控制器的整定的方法
  • Java中的加盐加密:提升密码存储安全性的关键实践
  • docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境
  • 【Pandas】pandas Series shift
  • 操作系统知识点28
  • Tomato靶机攻略
  • Redis超高并发分key实现
  • HDR图像处理:色调映射和色域映射参数
  • 记一次OOM异常问题排查
  • 感觉自己邮电部诗人
  • electron + vue3 + vite 渲染进程与渲染进程之间的消息端口通信
  • 用nodejs加electron加roboticjs判断鼠标点击时是否在浏览器内部
  • 1.VisionPro的安装
  • 国家统计局:2024年城镇单位就业人员工资平稳增长
  • 降水较常年同期少五成,安徽四大水利工程调水超11亿方应对旱情
  • 夜读丨母亲为燕子打开家门
  • 视频丨中国海警成功救助8名外籍遇险渔民,韩方向中方致谢
  • 青海省交通运输厅副厅长田明有接受审查调查
  • 昆明警方重拳打击经济领域违法犯罪:去年抓获905名嫌犯