一、核心概念

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.propertiesapplication.yml

二、详细操作步骤(以 IntelliJ IDEA + Maven 为例)

步骤 1:打开 Spring Initializr 创建向导

  1. 启动 IntelliJ IDEA(推荐使用 Ultimate 版,Community 版也支持)
  2. 选择 FileNewProject
  3. 在左侧选择 Spring Initializr
    • Service URL:默认 https://start.spring.io(官方)
    • 可切换为阿里云镜像(国内推荐):https://start.aliyun.com

✅ 推荐使用阿里云镜像(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 WebDevTools 用于第一个项目。

🔍 搜索关键词快速查找依赖。

点击 “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 接口

  1. 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();
    }
}
  1. 确保 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:运行项目

  1. 右键点击 DemoApplication.javaRun 'DemoApplication.main()'
  2. 等待控制台输出:
Tomcat started on port(s): 8080 (http)
Started DemoApplication in 3.2 seconds
  1. 打开浏览器访问:http://localhost:8080/hello
  2. 输出:Hello, Spring Boot! 当前时间:1722313920000

✅ 恭喜!你的第一个 Spring Boot 项目已成功运行!


三、常见错误与解决方案

错误现象 原因 解决方案
Port 8080 already in use 端口被占用 修改 application.propertiesserver.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

四、注意事项

  1. 包扫描范围@SpringBootApplication 默认扫描所在包及其子包,确保你的组件在正确包下。
  2. 配置文件优先级application.yml > application.properties,避免同时存在。
  3. DevTools 热部署:修改代码后需 Ctrl + F9(Build)触发重启(非所有更改都热加载)。
  4. Lombok 插件:确保 IDE 安装了 Lombok 插件,否则 @Data 不生效。
  5. Java 版本兼容:Spring Boot 3.x 要求 Java 17+,Boot 2.x 支持 Java 8/11。

五、使用技巧

  1. 快速生成 Getters/Setters:使用 Lombok 的 @Data@Getter @Setter
  2. 配置文件分环境
    • application-dev.properties
    • application-prod.properties
    • 使用 spring.profiles.active=dev 激活
  3. 使用 @Value 注入配置
    @Value("${app.name:DefaultApp}")
    private String appName;
    
  4. 使用 @ConfigurationProperties 绑定复杂配置
    @ConfigurationProperties(prefix = "app")
    public class AppProperties { ... }
    
  5. 使用 Actuator 监控
    • 添加依赖 spring-boot-starter-actuator
    • 访问 http://localhost:8080/actuator/health

六、最佳实践与性能优化

最佳实践

  1. 分层架构
    • Controller → Service → Repository
    • 使用 @Controller, @Service, @Repository 明确职责
  2. 异常处理
    • 使用 @ControllerAdvice + @ExceptionHandler 统一处理异常
  3. 日志记录
    • 使用 SLF4J + Logback,避免 System.out.println
  4. 配置外化
    • 敏感信息(密码)使用环境变量或配置中心(如 Nacos)
  5. 单元测试
    • 使用 @SpringBootTest 编写集成测试

性能优化建议

  1. 启用 Gzip 压缩
    server.compression.enabled=true
    server.compression.mime-types=application/json,text/html
    
  2. 使用连接池(如 HikariCP):
    • Spring Boot 默认使用 HikariCP,确保配置合理:
    spring.datasource.hikari.maximum-pool-size=20
    
  3. 缓存
    • 使用 @Cacheable + Redis 缓存高频数据
  4. 异步处理
    • 使用 @Async 处理耗时任务(需启用 @EnableAsync
  5. 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 的最快方式!