1. 什么是 Spring Boot?
Spring Boot 是 Pivotal 团队在 Spring 框架基础上推出的一个全新开源框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。它采用了"约定优于配置"的理念,让开发者能够快速创建独立的、生产级别的基于 Spring 的应用程序。
核心特性:
- 自动配置:根据项目依赖自动配置 Spring 应用。
- 独立运行:内嵌了 Tomcat、Jetty 或 Undertow 等 Web 服务器,无需部署 WAR 文件。
- 生产就绪:提供诸如健康检查、指标、外部化配置等生产级特性。
- 无代码生成:无需 XML 配置,也无需代码生成。
2. 环境准备与项目创建
2.1 系统要求
- Java:JDK 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)。
- 添加依赖:例如
Spring Web、Spring Data JPA、Lombok等。 - 点击 Generate 下载项目压缩包。
- 解压后,用 IDE 导入项目。
你也可以使用命令行创建:
bash
curl https://start.spring.io/starter.zip -d dependencies=web -d type=maven-project -o demo.zip
3. 项目结构解析
一个典型的 Spring Boot 项目结构如下:
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── demo/
│ │ ├── DemoApplication.java # 主启动类
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 业务逻辑层
│ │ ├── repository/ # 数据访问层
│ │ └── model/ # 实体类
│ └── resources/
│ ├── application.properties # 配置文件
│ ├── static/ # 静态资源
│ └── templates/ # 模板文件
└── test/ # 测试代码
pom.xml 或 build.gradle # 构建配置文件
关键文件说明:
DemoApplication.java:包含@SpringBootApplication注解的主类,是应用的入口。application.properties:核心配置文件,用于设置数据库连接、服务器端口等。
4. 编写第一个 REST API
让我们创建一个简单的"Hello World" API。
- 创建控制器 :在
controller包下新建HelloController.java。
java
package com.example.demo.controller;
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!";
}
}
- 启动应用 :运行
DemoApplication类中的main方法。 - 测试 API :打开浏览器或使用
curl访问http://localhost:8080/hello,你将看到返回的字符串。
5. 配置文件详解
Spring Boot 支持多种配置方式,优先级从高到低为:
- 命令行参数
application-{profile}.properties或.ymlapplication.properties或.yml
示例 (application.properties):
properties
# 服务器端口
server.port=8081
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
# 日志级别
logging.level.com.example.demo=DEBUG
YAML 格式示例 (application.yml):
yaml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
com.example.demo: DEBUG
6. 连接数据库 (Spring Data JPA)
Spring Boot 极大地简化了数据库操作。
- 添加依赖 :在
pom.xml中添加spring-boot-starter-data-jpa和数据库驱动(如mysql-connector-java)。 - 定义实体类:
java
package com.example.demo.model;
import jakarta.persistence.*;
import lombok.Data;
@Data
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
- 创建 Repository 接口:
java
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
// 可以自定义查询方法
User findByName(String name);
}
- 在 Service 或 Controller 中注入并使用:
java
@Autowired
private UserRepository userRepository;
public User createUser(User user) {
return userRepository.save(user);
}
7. 运行与打包
7.1 运行应用
- IDE 中 :直接运行主类的
main方法。 - 命令行 :在项目根目录执行
mvn spring-boot:run(Maven) 或gradle bootRun(Gradle)。
7.2 打包部署
Spring Boot 可以将应用打包成一个可执行的 JAR 文件,内嵌了所有依赖和 Web 服务器。
bash
# Maven
mvn clean package
# 打包后会在 target/ 目录生成 demo-0.0.1-SNAPSHOT.jar
# 运行 JAR 文件
java -jar target/demo-0.0.1-SNAPSHOT.jar
8. 总结与下一步
恭喜!你已经完成了 Spring Boot 的入门之旅。你学会了:
- Spring Boot 的核心概念与优势。
- 如何创建和运行一个 Spring Boot 项目。
- 编写简单的 REST API 和连接数据库。
下一步学习建议:
- 深入理解自动配置原理 :查看
spring-boot-autoconfigure源码。 - 学习 Spring Security:为你的 API 添加认证和授权。
- 探索微服务:了解 Spring Cloud 如何基于 Spring Boot 构建分布式系统。
- 实践项目:尝试用 Spring Boot 构建一个博客系统或待办事项应用。
Spring Boot 生态庞大,持续学习和实践是掌握它的最佳途径。