目录
[二、快速入门(创建第一个 Spring Boot 项目)](#二、快速入门(创建第一个 Spring Boot 项目))
[1. 环境准备](#1. 环境准备)
[2. 创建项目(3 种方式)](#2. 创建项目(3 种方式))
[方式 1:Spring Initializr(官方脚手架)](#方式 1:Spring Initializr(官方脚手架))
[方式 2:IDEA 直接创建](#方式 2:IDEA 直接创建)
[方式 3:手动搭建(了解核心结构)](#方式 3:手动搭建(了解核心结构))
[3. 编写核心代码](#3. 编写核心代码)
[4. 运行与访问](#4. 运行与访问)
[1. 配置文件类型](#1. 配置文件类型)
[2. 基础配置示例(application.yml)](#2. 基础配置示例(application.yml))
[3. 读取配置的方式](#3. 读取配置的方式)
[方式 1:@Value 注解](#方式 1:@Value 注解)
[方式 2:@ConfigurationProperties(批量读取)](#方式 2:@ConfigurationProperties(批量读取))
[1. 打包为可执行 JAR](#1. 打包为可执行 JAR)
[2. 部署到服务器](#2. 部署到服务器)
Spring Boot 是由 Pivotal 团队开发的基于 Spring 框架的快速开发脚手架,核心目标是简化 Spring 应用的搭建、配置和部署,通过 "约定优于配置" 的理念,让开发者专注于业务逻辑而非繁琐的配置。
一、核心优势
- 自动配置 :根据项目依赖自动配置 Spring 组件(如引入
spring-boot-starter-web自动配置 MVC、Tomcat 等); - 起步依赖 :将常用依赖打包成 starter(如
spring-boot-starter-data-jpa、spring-boot-starter-test),简化 pom.xml/gradle 配置; - 内嵌服务器:默认内嵌 Tomcat/Jetty/Undertow,无需手动部署 WAR 包;
- 简化部署 :可打包为可执行 JAR 包,直接通过
java -jar运行; - 监控与管理:内置 Actuator 模块,可监控应用健康状态、指标等;
- 无代码生成 / XML 配置:完全基于注解,零 XML 配置(可选保留)。
二、快速入门(创建第一个 Spring Boot 项目)
1. 环境准备
- JDK 8+(推荐 11/17,Spring Boot 3.x 要求 JDK 17+);
- Maven/Gradle(构建工具);
- IDE(IntelliJ IDEA/Eclipse,IDEA 推荐)。
2. 创建项目(3 种方式)
方式 1:Spring Initializr(官方脚手架)
- 访问 start.spring.io;
- 配置:
- Project:Maven/Gradle;
- Language:Java;
- Spring Boot Version:选择稳定版(如 3.2.x);
- Group/Artifact:项目坐标(如 com.example/demo);
- Dependencies:添加
Spring Web(Web 开发);
- 点击 Generate 下载项目压缩包,解压后导入 IDE。
方式 2:IDEA 直接创建
- IDEA → New Project → Spring Initializr;
- 填写上述配置,自动生成项目结构。
方式 3:手动搭建(了解核心结构)
xml
<!-- pom.xml 核心依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
<relativePath/>
</parent>
<dependencies>
<!-- Web 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 打包为可执行 JAR -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3. 编写核心代码
主启动类(必须)
java
运行
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 核心注解:组合了 @Configuration + @EnableAutoConfiguration + @ComponentScan
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
// 启动 Spring Boot 应用
SpringApplication.run(DemoApplication.class, args);
}
}
控制器(测试接口)
java
运行
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 {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
4. 运行与访问
- 直接运行
DemoApplication类的main方法; - 浏览器访问
http://localhost:8080/hello,即可看到返回结果。
三、核心配置
1. 配置文件类型
Spring Boot 支持多种配置文件,优先级:properties < yml < yaml(推荐 yml,更简洁)。
- 默认路径:
src/main/resources/application.yml(或 application.properties); - 多环境配置:
application-dev.yml、application-prod.yml。
2. 基础配置示例(application.yml)
yaml
# 服务器配置
server:
port: 8080 # 端口
servlet:
context-path: /demo # 上下文路径
# Spring 配置
spring:
# 多环境激活(dev/prod/test)
profiles:
active: dev
# 数据源配置(以 MySQL 为例)
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: 123456
# 自定义配置(可通过 @Value 或 @ConfigurationProperties 读取)
custom:
name: Spring Boot
version: 3.2.0
3. 读取配置的方式
方式 1:@Value 注解
java
运行
@RestController
public class ConfigController {
// 读取自定义配置
@Value("${custom.name}")
private String name;
@Value("${custom.version}")
private String version;
@GetMapping("/config")
public String getConfig() {
return "Name: " + name + ", Version: " + version;
}
}
方式 2:@ConfigurationProperties(批量读取)
java
运行
@Component
@ConfigurationProperties(prefix = "custom") // 配置前缀
public class CustomConfig {
private String name;
private String version;
// 生成 getter/setter
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getVersion() { return version; }
public void setVersion(String version) { this.version = version; }
}
四、常用功能模块
Spring Boot 提供了丰富的 starter 依赖,覆盖主流开发场景:
| 功能场景 | 核心依赖(starter) |
|---|---|
| Web 开发 | spring-boot-starter-web |
| 数据库访问 | spring-boot-starter-data-jpa/MyBatis |
| 数据库连接 | spring-boot-starter-jdbc |
| 缓存 | spring-boot-starter-cache(+ Redis/Ehcache) |
| 安全认证 | spring-boot-starter-security |
| 消息队列 | spring-boot-starter-amqp(RabbitMQ) |
| 监控运维 | spring-boot-starter-actuator |
| 模板引擎 | spring-boot-starter-thymeleaf |
| 测试 | spring-boot-starter-test |
五、打包与部署
1. 打包为可执行 JAR
bash
运行
# Maven 打包(项目根目录执行)
mvn clean package
# 运行打包后的 JAR
java -jar target/demo-0.0.1-SNAPSHOT.jar
# 指定环境运行
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
2. 部署到服务器
- 将 JAR 包上传到服务器;
- 通过
nohup java -jar demo.jar &后台运行(避免终端关闭停止); - 可配合
systemd配置成系统服务,实现开机自启。
六、关键注解说明
| 注解 | 作用 |
|---|---|
| @SpringBootApplication | 核心注解,组合 @Configuration + @EnableAutoConfiguration + @ComponentScan |
| @RestController | 标记控制器,返回 JSON / 字符串(替代 @Controller + @ResponseBody) |
| @GetMapping/@PostMapping | 简化请求映射(替代 @RequestMapping (method=RequestMethod.GET)) |
| @Autowired | 自动注入依赖(按类型) |
| @Component/@Service/@Repository | 标记组件,纳入 Spring 容器管理(分层注解) |
| @Configuration | 标记配置类(替代 XML 配置) |
| @Bean | 声明 Bean 实例,放入 Spring 容器 |
七、常见问题与解决方案
- 端口被占用 :修改
server.port为未占用端口(如 8081); - 依赖冲突 :通过
mvn dependency:tree分析依赖,排除冲突包; - 配置文件不生效 :检查文件路径、名称是否正确(如
application.yml拼写错误); - 启动失败(数据源错误):检查数据库地址、用户名、密码是否正确,数据库是否启动;
- 热部署 :添加
spring-boot-devtools依赖,实现代码修改后自动重启。