一、核心概念
1. 什么是 Spring Boot?
Spring Boot 是由 Pivotal 团队开发的开源框架,旨在简化 Spring 应用的“初始搭建”和“开发过程”。它通过自动配置(Auto-configuration)、起步依赖(Starter Dependencies)和内嵌服务器(如 Tomcat)来减少配置,实现“开箱即用”。
2. 什么是 Spring Initializr?
Spring Initializr 是一个官方提供的在线工具或 IDE 集成功能,用于快速生成基于 Spring Boot 的项目骨架(Maven 或 Gradle 构建项目),支持选择依赖、Java 版本、项目元数据等。
3. 核心优势
- 自动配置
- 起步依赖(减少版本冲突)
- 内嵌容器(无需部署 WAR)
- Actuator 监控
- 简化配置(
application.properties
或application.yml
)
二、详细操作步骤(以 IntelliJ IDEA + Maven 为例)
步骤 1:打开 Spring Initializr 创建向导
- 启动 IntelliJ IDEA(推荐使用 Ultimate 版,Community 版也支持)
- 选择
File
→New
→Project
- 在左侧选择 Spring Initializr
- Service URL:默认
https://start.spring.io
(官方) - 可切换为阿里云镜像(国内推荐):
https://start.aliyun.com
- Service URL:默认
✅ 推荐使用阿里云镜像(
https://start.aliyun.com
)以提升依赖下载速度。
步骤 2:配置项目元数据
字段 | 示例值 | 说明 |
---|---|---|
Project SDK | Java 17 或 11 | 推荐 LTS 版本 |
Language | Java | 也可选 Kotlin/Scala |
Type | Maven | 或 Gradle |
Group | com.example | 包名前缀(反向域名) |
Artifact | demo | 项目名(生成文件夹名) |
Name | demo | 项目名称 |
Package Name | com.example.demo | 主包路径 |
Packaging | Jar | Spring Boot 推荐 Jar |
Java Version | 17 | 与 SDK 一致 |
✅ 点击 “Next”
步骤 3:选择依赖(Dependencies)
这是关键步骤,选择你需要的起步依赖(Starter):
依赖名称 | 作用 |
---|---|
Spring Web | 构建 Web 应用,含 Tomcat + Spring MVC |
Spring Boot DevTools | 开发工具(热部署、自动重启) |
Lombok | 简化 POJO 写法(@Data , @AllArgsConstructor ) |
Spring Configuration Processor | 提升 @ConfigurationProperties 编辑体验 |
Spring Data JPA | ORM 框架(可选) |
MySQL Driver | 数据库驱动(可选) |
✅ 至少选择 Spring Web 和 DevTools 用于第一个项目。
🔍 搜索关键词快速查找依赖。
点击 “Next”
步骤 4:设置项目路径
- 选择项目保存路径(如
D:\projects\demo
) - 点击 “Finish”
IDEA 将自动:
- 下载项目骨架
- 解压并导入 Maven 项目
- 下载依赖(
pom.xml
中的 starters)
⏳ 首次可能需要几分钟(取决于网络)
步骤 5:项目结构解析
生成的项目结构如下:
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com.example.demo/
│ │ │ └── DemoApplication.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── static/ # 静态资源
│ │ └── templates/ # 模板文件(Thymeleaf)
│ └── test/
│ └── java/
│ └── com.example.demo/
│ └── DemoApplicationTests.java
├── pom.xml
└── HELP.md
步骤 6:编写第一个 REST 接口
- 在
com.example.demo
包下创建HelloController.java
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot! 当前时间:" + System.currentTimeMillis();
}
}
- 确保
DemoApplication.java
启动类存在:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication
=@Configuration
+@EnableAutoConfiguration
+@ComponentScan
步骤 7:运行项目
- 右键点击
DemoApplication.java
→Run 'DemoApplication.main()'
- 等待控制台输出:
Tomcat started on port(s): 8080 (http)
Started DemoApplication in 3.2 seconds
- 打开浏览器访问:
http://localhost:8080/hello
- 输出:
Hello, Spring Boot! 当前时间:1722313920000
✅ 恭喜!你的第一个 Spring Boot 项目已成功运行!
三、常见错误与解决方案
错误现象 | 原因 | 解决方案 |
---|---|---|
Port 8080 already in use |
端口被占用 | 修改 application.properties :server.port=8081 |
Could not find or load main class |
类路径错误 | 检查 main 方法所在类是否正确 |
ClassNotFoundException |
依赖未下载 | 删除 .m2/repository 缓存,重新 mvn clean compile |
No qualifying bean of type |
Bean 未注册 | 检查是否遗漏 @Component , @Service 等注解 |
Whitelabel Error Page |
路径错误或未映射 | 检查 @GetMapping 路径拼写 |
Invalid bound statement (not found) |
MyBatis 映射问题 | 检查 @Mapper 或 @MapperScan |
四、注意事项
- 包扫描范围:
@SpringBootApplication
默认扫描所在包及其子包,确保你的组件在正确包下。 - 配置文件优先级:
application.yml
>application.properties
,避免同时存在。 - DevTools 热部署:修改代码后需
Ctrl + F9
(Build)触发重启(非所有更改都热加载)。 - Lombok 插件:确保 IDE 安装了 Lombok 插件,否则
@Data
不生效。 - Java 版本兼容:Spring Boot 3.x 要求 Java 17+,Boot 2.x 支持 Java 8/11。
五、使用技巧
- 快速生成 Getters/Setters:使用 Lombok 的
@Data
或@Getter @Setter
- 配置文件分环境:
application-dev.properties
application-prod.properties
- 使用
spring.profiles.active=dev
激活
- 使用
@Value
注入配置:@Value("${app.name:DefaultApp}") private String appName;
- 使用
@ConfigurationProperties
绑定复杂配置:@ConfigurationProperties(prefix = "app") public class AppProperties { ... }
- 使用 Actuator 监控:
- 添加依赖
spring-boot-starter-actuator
- 访问
http://localhost:8080/actuator/health
- 添加依赖
六、最佳实践与性能优化
最佳实践
- 分层架构:
- Controller → Service → Repository
- 使用
@Controller
,@Service
,@Repository
明确职责
- 异常处理:
- 使用
@ControllerAdvice
+@ExceptionHandler
统一处理异常
- 使用
- 日志记录:
- 使用 SLF4J + Logback,避免
System.out.println
- 使用 SLF4J + Logback,避免
- 配置外化:
- 敏感信息(密码)使用环境变量或配置中心(如 Nacos)
- 单元测试:
- 使用
@SpringBootTest
编写集成测试
- 使用
性能优化建议
- 启用 Gzip 压缩:
server.compression.enabled=true server.compression.mime-types=application/json,text/html
- 使用连接池(如 HikariCP):
- Spring Boot 默认使用 HikariCP,确保配置合理:
spring.datasource.hikari.maximum-pool-size=20
- 缓存:
- 使用
@Cacheable
+ Redis 缓存高频数据
- 使用
- 异步处理:
- 使用
@Async
处理耗时任务(需启用@EnableAsync
)
- 使用
- JVM 调优(生产环境):
- 设置堆大小:
-Xms512m -Xmx1024m
- 选择合适 GC:如 G1GC
- 设置堆大小:
七、扩展建议
- 学习使用 Spring Boot CLI 快速原型开发
- 集成 Swagger 生成 API 文档(
springdoc-openapi-ui
) - 使用 Docker 容器化部署
- 结合 Spring Cloud 构建微服务
总结
通过 Spring Initializr,你可以在 5 分钟内搭建一个可运行的 Spring Boot 项目。掌握核心概念、避免常见错误、遵循最佳实践,是快速成长为 Spring Boot 开发者的关键。
✅ 动手实践是掌握 Spring Boot 的最快方式!