1. Spring Boot 简介
Spring Boot 是 Spring 框架的一个子项目,旨在简化基于 Spring 的应用开发。它通过"约定优于配置"的理念,提供了大量默认配置和快速启动的脚手架,让开发者能够快速创建独立运行、生产级别的 Spring 应用程序。
核心特性:
- 自动配置:根据项目依赖自动配置 Spring 应用。
- 独立运行:内嵌了 Tomcat、Jetty 或 Undertow 等 Web 服务器,无需部署 WAR 包。
- 生产就绪:提供健康检查、指标、外部化配置等生产级特性。
- 无代码生成:无需 XML 配置,通过 Java 注解和少量配置即可完成。
2. 环境准备与项目创建
2.1 系统要求
- JDK:Java 8 或更高版本(推荐 JDK 11 或 17)。
- 构建工具:Maven 3.3+ 或 Gradle 4.4+。
- IDE:IntelliJ IDEA(推荐)、Eclipse 或 VS Code。
2.2 创建 Spring Boot 项目
推荐使用 Spring Initializr 在线生成项目骨架。
步骤:
- 访问 Spring Initializr 网站。
- 选择项目信息:
- Project:Maven 或 Gradle。
- Language:Java。
- Spring Boot:选择稳定版本(如 3.x)。
- Group:com.example(你的组织域名)。
- Artifact:demo(项目名称)。
- 添加依赖:选择
Spring Web、Spring Boot DevTools、Lombok等。 - 点击 Generate 下载项目压缩包。
- 解压后导入 IDE。
或者使用命令行:
bash
curl https://start.spring.io/starter.zip -d dependencies=web,devtools,lombok -d type=maven-project -d groupId=com.example -d artifactId=demo -o demo.zip
unzip demo.zip
3. 项目结构解析
一个典型的 Spring Boot 项目结构如下:
demo/
├── src/
│ ├── main/
│ │ ├── java/com/example/demo/
│ │ │ ├── DemoApplication.java # 主启动类
│ │ │ └── controller/
│ │ │ └── HelloController.java # 控制器示例
│ │ └── resources/
│ │ ├── application.properties # 配置文件
│ │ └── static/ # 静态资源
│ └── test/ # 测试代码
├── pom.xml # Maven 配置
└── README.md
关键文件说明:
- DemoApplication.java :包含
@SpringBootApplication注解的主类,是整个应用的入口。 - application.properties:应用配置文件,可配置端口、数据库连接等。
- pom.xml:Maven 依赖管理文件。
4. 编写第一个 REST API
在 src/main/java/com/example/demo/controller 目录下创建 HelloController.java:
java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
}
注解说明:
@RestController:标记该类为 REST 控制器,返回值自动转为 JSON。@RequestMapping("/api"):定义控制器的基础路径。@GetMapping("/hello"):映射 HTTP GET 请求到/api/hello路径。
5. 运行与测试
5.1 启动应用
在 IDE 中直接运行 DemoApplication 类的 main 方法,或在项目根目录执行:
bash
# Maven
./mvnw spring-boot:run
# 或 Gradle
./gradlew bootRun
控制台输出 Started DemoApplication in X.XXX seconds 表示启动成功。
5.2 测试 API
打开浏览器或使用 curl 访问:
http://localhost:8080/api/hello
应返回 Hello, Spring Boot!。
5.3 热部署
Spring Boot DevTools 支持热重启。修改代码后保存,应用会自动重启(无需手动停止)。
6. 常用配置与自定义
6.1 修改服务器端口
在 application.properties 中添加:
properties
server.port=9090
或在 application.yml 中:
yaml
server:
port: 9090
6.2 配置日志级别
properties
logging.level.com.example.demo=DEBUG
logging.level.root=INFO
6.3 自定义 Banner
在 src/main/resources 下创建 banner.txt 文件,写入自定义 ASCII 艺术字,启动时会显示。
7. 连接数据库(以 MySQL 为例)
7.1 添加依赖
在 pom.xml 中添加:
xml
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
7.2 配置数据源
application.properties:
properties
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
7.3 创建实体与仓库
java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
public interface UserRepository extends JpaRepository<User, Long> {
}
8. 打包与部署
8.1 打包为可执行 JAR
bash
./mvnw clean package
生成的 target/demo-0.0.1-SNAPSHOT.jar 包含了所有依赖和嵌入式 Web 服务器。
8.2 运行 JAR 包
bash
java -jar target/demo-0.0.1-SNAPSHOT.jar
8.3 构建 Docker 镜像
创建 Dockerfile:
dockerfile
FROM openjdk:17-jdk-slim
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建并运行:
bash
docker build -t demo-app .
docker run -p 8080:8080 demo-app