本文最后更新于84 天前,其中的信息可能已经过时,如有错误请发送邮件到3082654005@qq.com
Spring Boot 是 Spring 生态系统中用于快速开发 Spring 应用的框架,它的核心目标是简化配置、快速开发、开箱即用,让开发者能够专注于业务逻辑而非框架配置。下面从基础概念、环境搭建、项目开发到核心原理,全方位讲解 Spring Boot 入门知识。
一、Spring Boot 核心价值:为什么需要它?
在 Spring Boot 出现之前,使用传统 Spring 框架开发项目需要做大量繁琐工作:
- 手动导入各种依赖(如 Spring MVC、数据库驱动等),还要处理依赖版本冲突
- 编写大量 XML 配置文件(如配置 DispatcherServlet、数据源、事务管理器等)
- 手动部署应用到外部服务器(如 Tomcat、Jetty)
而 Spring Boot 解决了这些问题,核心特点包括:
- 自动配置:根据类路径中的依赖自动配置 Spring 组件(无需手动配置)
- 起步依赖(Starter):预定义的依赖组合,简化依赖管理(如
spring-boot-starter-web包含开发 Web 应用所需的所有依赖) - 嵌入式服务器:内置 Tomcat、Jetty 等服务器,无需手动部署
- 无代码生成和 XML 配置:通过注解和约定代替繁琐配置
- 生产就绪特性:内置监控、健康检查、外部化配置等功能
二、环境准备:开发前的必要配置
要开发 Spring Boot 项目,需要先准备以下环境:
- JDK:Spring Boot 3.x 要求 JDK 17+,2.x 要求 JDK 8+(推荐 JDK 11,兼容性更好)
验证:终端输入java -version,能看到版本信息即为安装成功。 - 构建工具:Maven 或 Gradle(推荐 Maven,更常用)
验证:终端输入mvn -v,能看到版本信息即为安装成功。 - IDE:推荐 IntelliJ IDEA(社区版足够)或 Eclipse(需安装 Spring Tools 插件)
三、第一个 Spring Boot 项目:从创建到运行
我们以开发一个简单的 Web 接口为例,完整演示开发流程。
步骤 1:创建 Spring Boot 项目
推荐使用 Spring Initializr 快速创建项目,有两种方式:
方式 1:网页版创建(适合新手)
- 打开 Spring Initializr(官方项目生成工具)
- 配置项目信息:
- Project:选择 Maven(或 Gradle)
- Language:Java
- Spring Boot:选择 3.2.x(稳定版本)
- Group:组织标识(如
com.example) - Artifact:项目名(如
demo) - Name:项目显示名(默认同 Artifact)
- Package name:包名(默认
com.example.demo) - Java:选择 17(对应 Spring Boot 3.x)
- 选择依赖:在 Dependencies 中搜索并添加
Spring Web(开发 Web 应用的核心依赖) - 点击 Generate 下载项目压缩包,解压后用 IDE 打开。
方式 2:IDE 直接创建(更高效)
以 IntelliJ IDEA 为例:
- 点击
File -> New -> Project - 左侧选择
Spring Initializr,右侧保持默认(使用官方地址) - 填写项目信息(同网页版),选择
Spring Web依赖 - 选择项目保存路径,点击
Create完成创建
步骤 2:项目结构解析
创建完成后,项目结构如下(核心目录 / 文件):
plaintext
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── demo/
│ │ │ └── DemoApplication.java // 项目主类(启动入口)
│ │ └── resources/
│ │ ├── application.properties // 全局配置文件
│ │ ├── static/ // 静态资源(如 CSS、JS、图片)
│ │ └── templates/ // 模板文件(如 Thymeleaf、Freemarker)
│ └── test/ // 测试代码目录
├── pom.xml // Maven 依赖配置文件
└── README.md
核心文件说明:
- DemoApplication.java:项目启动类,包含
main方法,通过@SpringBootApplication注解标识 - application.properties:配置文件,可修改端口号、日志级别等(也可使用 YAML 格式
application.yml,更易读) - pom.xml:管理项目依赖,Spring Boot 的起步依赖在这里声明
步骤 3:编写第一个 Web 接口
我们来开发一个简单的接口:访问 http://localhost:8080/hello 时,返回字符串 “Hello Spring Boot!”。
- 在
com.example.demo包下创建一个controller子包(规范:控制器类放在 controller 包中) - 在
controller包中创建HelloController.java类:
java
运行
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
// @RestController:标识这是一个控制器,且所有方法返回值直接作为响应体(无需视图解析器)
@RestController
public class HelloController {
// @GetMapping("/hello"):表示接收 GET 请求,路径为 /hello
@GetMapping("/hello")
public String sayHello() {
// 开发者只需编写业务逻辑:返回一个字符串
return "Hello Spring Boot!";
}
}
步骤 4:运行项目并测试
- 运行项目:找到
DemoApplication.java,右键点击Run DemoApplication(IDE 会自动编译并启动) - 观察控制台输出,出现以下日志说明启动成功:
plaintext
Tomcat started on port 8080 (http) with context path ''
Started DemoApplication in 1.234 seconds (process running for 2.345)
- 测试接口:打开浏览器访问
http://localhost:8080/hello,页面会显示Hello Spring Boot!
四、核心原理:Spring Boot 做了什么?开发者做了什么?
通过上面的例子,我们可以清晰区分两者的职责:
1. Spring Boot 自动完成的工作
- 依赖管理:通过
spring-boot-starter-web自动导入了 Spring MVC、Tomcat 服务器、Jackson(JSON 解析)等依赖,无需手动添加。 - 自动配置:
- 自动配置 DispatcherServlet(Spring MVC 的核心控制器),处理 HTTP 请求
- 自动配置 Tomcat 服务器(默认端口 8080),无需手动部署
- 自动扫描控制器(通过
@RestController标识),并将接口映射到 URL
- 启动流程:通过
DemoApplication的main方法启动 Spring 容器,加载所有自动配置和开发者定义的组件。
2. 开发者需要做的工作
- 定义业务组件:如
HelloController这样的控制器,通过注解(@RestController、@GetMapping)声明组件功能。 - 编写业务逻辑:在控制器方法中实现具体功能(如
sayHello()返回字符串)。 - 必要的自定义配置:如果需要修改默认配置(如端口号),在
application.properties中添加:properties# 修改端口号为 8081 server.port=8081
五、关键注解解析
Spring Boot 大量使用注解简化配置,核心注解如下:
- @SpringBootApplication(主类上):
是一个组合注解,包含三个核心注解:@SpringBootConfiguration:标识这是一个配置类(类似传统 Spring 的@Configuration)@EnableAutoConfiguration:开启自动配置(核心!Spring Boot 根据依赖自动配置 Bean)@ComponentScan:自动扫描当前包及子包下的组件(如@RestController、@Service等)
- @RestController(控制器类上):
组合了@Controller和@ResponseBody,表示该类是控制器,且所有方法的返回值直接作为 HTTP 响应体(适合开发 API 接口)。 - @GetMapping(“/path”)(方法上):
表示接收 HTTP GET 请求,路径为/path(类似的还有@PostMapping、@PutMapping等,对应不同请求方式)。
六、扩展:添加一个简单的业务层
实际开发中,我们会将业务逻辑放在 Service 层,控制器调用 Service 层处理业务。
- 创建
service包,新建HelloService.java:
java
运行
package com.example.demo.service;
import org.springframework.stereotype.Service;
// @Service:标识这是一个业务层组件,会被 Spring 容器管理
@Service
public class HelloService {
// 业务逻辑:拼接欢迎语
public String getWelcomeMessage(String name) {
return "Hello, " + name + "! Welcome to Spring Boot!";
}
}
- 修改
HelloController,注入HelloService并调用:
java
运行
package com.example.demo.controller;
import com.example.demo.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
// @Autowired:自动注入 HelloService 实例(Spring 容器管理的对象)
@Autowired
private HelloService helloService;
// @RequestParam:接收 URL 中的参数(如 http://localhost:8080/welcome?name=Tom)
@GetMapping("/welcome")
public String welcome(@RequestParam String name) {
// 调用 Service 层处理业务
return helloService.getWelcomeMessage(name);
}
}
- 重启项目,访问
http://localhost:8080/welcome?name=Tom,会返回Hello, Tom! Welcome to Spring Boot!
七、总结
通过这个简单项目,我们可以看到:
- Spring Boot 负责:环境配置、依赖管理、服务器启动、组件自动装配等 “框架性工作”,让开发者无需关注底层细节。
- 开发者负责:定义业务组件(Controller、Service 等)、编写业务逻辑、必要的自定义配置(如端口号),专注于业务实现。
Spring Boot 的核心思想是 “约定优于配置”:通过预定义的约定(如目录结构、注解规则)减少配置,让项目开发更高效。后续可以进一步学习数据库集成(如 Spring Data JPA)、事务管理、日志处理等功能,逐步构建复杂应用。


