Spring Boot 3.x 快速入门与核心配置详解

Spring Boot 是 Spring 生态的一站式解决方案,通过”约定优于配置”的理念,极大简化了 Spring 应用的搭建和开发过程。本文基于 Spring Boot 3.x 版本,带你从零快速上手。

一、环境准备

1.1 版本要求

Spring Boot 3.x 对环境有明确要求:

  • JDK:必须使用 Java 17 及以上版本(推荐 Java 17 LTS 或 Java 21 LTS)
  • Maven:3.6.3 及以上
  • Gradle:7.x 及以上
  • Servlet 容器:Tomcat 10+(Jakarta EE 9+)

1.2 创建项目的三种方式

方式一:Spring Initializr(推荐)

访问 https://start.spring.io,在线生成项目骨架:

  1. 选择 Project(Maven/Gradle)
  2. 选择 Language(Java)
  3. 选择 Spring Boot 版本
  4. 填写 Group、Artifact 等项目信息
  5. 添加依赖(Web、MyBatis、Redis 等)
  6. 点击 Generate 下载压缩包

方式二:IDEA 创建

IntelliJ IDEA 内置了 Spring Initializr 支持:

  1. New Project → 选择 Spring Initializr
  2. 填写项目坐标信息
  3. 勾选需要的 Starter 依赖
  4. 一键生成项目结构

方式三:手动搭建

手动创建 Maven 项目,在 pom.xml 中引入父依赖:

1
2
3
4
5
6
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>

二、项目结构说明

标准 Spring Boot 项目目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
src/main/java
└── com/example/demo
├── DemoApplication.java # 启动类(入口)
├── controller/ # 控制层
├── service/ # 业务层
├── mapper/ # 数据访问层
├── entity/ # 实体类
├── config/ # 配置类
└── util/ # 工具类
src/main/resources
├── application.yml # 主配置文件
├── application-dev.yml # 开发环境配置
├── application-prod.yml # 生产环境配置
├── static/ # 静态资源
└── templates/ # 模板文件
src/test/java # 单元测试

2.1 启动类详解

1
2
3
4
5
6
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

@SpringBootApplication 是一个组合注解,包含三个核心注解:

  • @SpringBootConfiguration:标记为配置类
  • @EnableAutoConfiguration:开启自动装配
  • @ComponentScan:开启组件扫描(默认扫描启动类所在包及其子包)

三、核心配置文件

3.1 配置文件格式

Spring Boot 支持两种格式:.properties.yml(推荐 YAML)。

application.yml 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 服务器配置
server:
port: 8080
servlet:
context-path: /demo

# Spring 配置
spring:
application:
name: demo-project
# 数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
# Redis 配置
redis:
host: localhost
port: 6379

# MyBatis 配置
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
configuration:
map-underscore-to-camel-case: true # 驼峰命名转换

3.2 多环境配置

通过 spring.profiles.active 切换环境:

1
2
3
spring:
profiles:
active: dev # 激活 dev 环境

对应配置文件命名规则:application-{profile}.yml

  • application-dev.yml — 开发环境
  • application-test.yml — 测试环境
  • application-prod.yml — 生产环境

3.3 读取配置的三种方式

方式一:@Value 注解

1
2
3
4
5
6
7
8
9
@RestController
public class TestController {

@Value("${server.port}")
private Integer port;

@Value("${spring.application.name}")
private String appName;
}

方式二:Environment

1
2
3
4
5
6
@Autowired
private Environment env;

public void test() {
String port = env.getProperty("server.port");
}

方式三:@ConfigurationProperties(推荐)

1
2
3
4
5
6
7
8
9
@Component
@ConfigurationProperties(prefix = "spring.datasource")
@Data
public class DataSourceProperties {
private String url;
private String username;
private String password;
private String driverClassName;
}

四、常用 Starter 依赖

Starter 依赖 说明
spring-boot-starter-web Web 开发(内置 Tomcat)
spring-boot-starter-test 单元测试(JUnit + Mockito)
spring-boot-starter-data-jpa JPA 数据访问
spring-boot-starter-redis Redis 缓存
spring-boot-starter-amqp RabbitMQ 消息队列
spring-boot-starter-security 安全认证框架
spring-boot-starter-validation 参数校验
mybatis-spring-boot-starter MyBatis 整合(第三方)

五、自动装配原理

5.1 核心流程

  1. 启动时通过 @EnableAutoConfiguration 加载自动配置类
  2. 读取 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件
  3. 根据 @Conditional 系列注解条件判断是否生效
  4. 将符合条件的 Bean 注册到 Spring 容器

5.2 常用条件注解

  • @ConditionalOnClass:类路径下存在指定类时生效
  • @ConditionalOnMissingBean:容器中不存在指定 Bean 时生效
  • @ConditionalOnProperty:配置文件中存在指定属性时生效
  • @ConditionalOnWebApplication:Web 应用时生效

六、快速写一个接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RestController
@RequestMapping("/api/user")
public class UserController {

@GetMapping("/{id}")
public Result<User> getUserById(@PathVariable Long id) {
User user = new User();
user.setId(id);
user.setName("神经蛙");
user.setAge(18);
return Result.success(user);
}

@PostMapping("/add")
public Result<String> addUser(@RequestBody @Valid UserDTO dto) {
// 业务逻辑
return Result.success("添加成功");
}
}

七、热部署配置

开发阶段开启热部署,修改代码无需重启:

1
2
3
4
5
6
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>

IDEA 中还需开启自动编译:

  1. SettingsBuild, Execution, DeploymentCompiler → 勾选 Build project automatically
  2. Ctrl+Shift+Alt+/Registry → 勾选 compiler.automake.allow.when.app.running

Spring Boot 3.x 最大的变化是全面迁移到 Jakarta EE,包名从 javax.* 变为 jakarta.*,升级旧项目时需要注意相关导入包的替换。