一、Spring Boot 核心优势:为何成为开发者首选?
Spring Boot 是 Spring 生态的 “脚手架”,核心目标是简化配置、提高开发效率,相比传统 Spring 有 3 大核心优势:
- 自动配置(AutoConfiguration):根据依赖自动注入 Bean,无需手动编写 XML 或 Java 配置(如引入spring-boot-starter-web自动配置 Tomcat、Spring MVC);
- 起步依赖(Starter Dependencies):整合常用依赖(如spring-boot-starter-mybatis包含 MyBatis+Spring 整合所需所有 jar),避免版本冲突;
- 嵌入式服务器:内置 Tomcat、Jetty,无需部署 WAR 包,直接运行 JAR 文件;
- 无代码生成 + 零 XML 配置:纯 Java 配置,开箱即用。
二、环境准备(2024 最新版)
工具 | 版本要求 |
JDK | 8/11/17(推荐 17,LTS 版本) |
Maven/Gradle | Maven 3.6+ / Gradle 7.0+ |
IDE | IntelliJ IDEA 2022+ / Eclipse 2023+ |
Spring Boot | 3.2.x(稳定版) |
注意:Spring Boot 3.x 仅支持 JDK 17+,若使用 JDK 8 需选择 Spring Boot 2.7.x 版本。
三、快速搭建:第一个 Spring Boot 应用(3 种方式)
方式 1:Spring Initializr(推荐,可视化配置)
- 访问官网:https://start.spring.io/
- 配置参数:
- Project:Maven/Gradle
- Language:Java
- Spring Boot:3.2.5
- Group:com.example(包名)
- Artifact:demo(项目名)
- Dependencies:勾选「Spring Web」(web 开发核心依赖)
- 点击「Generate」下载压缩包,解压后用 IDEA 打开。
方式 2:IDEA 内置工具(更高效)
- 打开 IDEA → New Project → Spring Initializr
- 填写 Group/Artifact,选择 Spring Boot 版本和依赖(同方式 1)
- 点击 Finish,IDEA 自动下载依赖并创建项目。
方式 3:手动创建(理解底层结构)
- 新建 Maven 项目,在pom.xml中添加 Spring Boot 父依赖和 web 起步依赖:
统一管理版本和依赖 --> <groupId>org.springframework.boot</groupId> >spring-boot-starter-parent</artifactId> <version>3.2.5 <relativePath/> </parent> 依赖:自动引入Tomcat、Spring MVC等 --> <dependencies> <dependency> <groupId>org.springframework.boot> spring-boot-starter-web</artifactId> > 将项目打包为可执行JAR --> > </groupId> <artifactId>spring-boot-maven-plugin </plugin> </plugins> |
- 创建启动类(必须在所有业务类的父包下):
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // 核心注解:包含@ComponentScan(扫描Bean)、@EnableAutoConfiguration(自动配置) @SpringBootApplication public class DemoApplication { public static void main(String[] args) { // 启动Spring Boot应用 SpringApplication.run(DemoApplication.class, args); } } |
- 创建 Controller 测试:
package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; // 等同于@Controller + @ResponseBody(返回JSON数据) @RestController public class HelloController { // 接收GET请求,路径为/hello @GetMapping("/hello") public String hello() { return "Hello Spring Boot 3.2!"; } } |
四、运行与测试
- 启动应用:右键DemoApplication→ Run(IDEA 会自动启动内置 Tomcat,默认端口 8080);
- 测试接口:
- 浏览器访问:http://localhost:8080/hello
- Postman 访问:GET 请求上述地址
- 成功响应:页面显示Hello Spring Boot 3.2!
五、实战进阶:整合核心组件(企业级常用)
1. 配置文件:application.yml(推荐,简洁易读)
Spring Boot 默认支持application.properties和application.yml,推荐后者,在src/main/resources下创建:
# 服务器配置 server: port: 8081 # 修改端口(避免冲突) servlet: context-path: /demo # 项目前缀(访问需加/demo) # 自定义配置(可通过@Value注入) app: name: SpringBootDemo version: 1.0.0 |
2. 整合 MyBatis(操作数据库)
- 添加依赖(pom.xml):
atis起步依赖 --> <dependency> >org.mybatis.spring.boot</groupId> >mybatis-spring-boot-starter 0.3 </dependency> MySQL驱动(Spring Boot 3.x需8.0+) --> > com.mysql -connector-j </scope> > |
- 配置数据库连接(application.yml):
spring: datasource: url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver # MyBatis配置 mybatis: mapper-locations: classpath:mapper/*.xml # Mapper.xml文件路径 type-aliases-package: com.example.demo.entity # 实体类别名包 |
- 编写实体类、Mapper 接口和 XML 文件(示例略,核心是 MyBatis 的常规用法,Spring Boot 自动整合无需额外配置)。
3. 全局异常处理
创建全局异常处理器,统一捕获项目中的异常:
package com.example.demo.exception; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.HashMap; import java.util.Map; // 全局异常处理:作用于所有@RestController @RestControllerAdvice public class GlobalExceptionHandler { // 捕获RuntimeException @ExceptionHandler(RuntimeException.class) public Map, Object> handleRuntimeException(RuntimeException e) { Map> result = new HashMap(); result.put("code", 500); result.put("message", e.getMessage()); return result; } } |
六、常见问题与解决方案
问题现象 | 解决方案 |
端口占用(Port 8080 in use) | 1. 关闭占用端口的进程;2. 在 application.yml 中修改 server.port |
依赖冲突(NoClassDefFoundError) | 排除冲突依赖(如通过标签)或升级 Spring Boot 版本 |
自动配置失效 | 1. 检查依赖是否正确引入;2. 确保启动类在父包下(@ComponentScan 扫描范围) |
数据库连接失败 | 1. 检查 MySQL 服务是否启动;2. 验证 url、用户名、密码是否正确 |
七、总结与扩展
Spring Boot 的核心是 “约定优于配置”,通过起步依赖和自动配置减少重复工作,让开发者专注于业务逻辑。本文仅覆盖基础用法,后续可扩展学习:
- 整合 Redis、RabbitMQ 等中间件;
- 配置 Spring Security 实现权限控制;
- 使用 Spring Boot Actuator 监控应用;
- 打包部署(Docker 容器化、云服务器部署)。
如果本文对你有帮助,欢迎点赞 + 收藏!有任何问题或补充,欢迎在评论区交流~
(注:文档部分内容可能由 AI 生成)