Spring Boot 入门指南¶
🎯 目标¶
了解 Spring 家族体系结构,掌握如何快速创建并运行第一个 Spring Boot 项目。
一、Spring 体系概述¶
1. Spring Framework 是什么?¶
Spring 是一个轻量级、开源的 Java 企业级开发框架,主要用于简化企业应用开发。 其核心是 IoC(控制反转) 和 AOP(面向切面编程)。
Spring 的核心模块包括:
- Spring Core:IoC 容器,管理对象的创建与依赖注入。
- Spring AOP:面向切面编程,用于日志、事务等横切逻辑。
- Spring MVC:构建 Web 应用的 MVC 框架。
- Spring Data:简化数据库访问(整合 JPA、MyBatis 等)。
- Spring Security:认证与授权安全框架。
- Spring Cloud:微服务架构开发工具集。
- Spring Boot:快速构建 Spring 应用的开发框架。
二、Spring 核心理念¶
Spring 的强大之处在于它通过 IoC 与 AOP 两大机制实现了松耦合与可扩展的架构。
1️⃣ IoC(控制反转,Inversion of Control)¶
概念:
传统开发中,对象的创建与依赖关系通常由开发者手动管理(new 对象)。
而在 Spring 中,这一职责被“反转”给了容器,由容器自动创建与注入依赖对象。
@Service
public class UserService {
private final UserRepository repo;
// Spring 自动注入 UserRepository
public UserService(UserRepository repo) {
this.repo = repo;
}
}
Spring 启动时会:
- 扫描注解(如
@Component,@Service,@Repository); - 将这些类注册为 Bean;
- 根据依赖关系自动注入(即 DI,Dependency Injection)。
好处:
- 解耦模块之间的依赖;
- 提高可测试性;
- 统一管理对象生命周期。
2️⃣ 什么是 Bean?¶
定义:
Bean 是由 Spring IoC 容器创建、管理、装配和销毁的对象。
当你使用诸如 @Component、@Service、@Bean 等注解时,
Spring 会自动将这些类实例化并交由容器统一管理。
示例:
@Component //表示当前类是一个由 Spring 管理的组件(Bean);
public class HelloService {
public String sayHi() {
return "Hi from Bean!";
}
}
使用时无需手动 new,容器会自动注入:
@RestController
public class HelloController {
private final HelloService service;
public HelloController(HelloService service) {
this.service = service;
}
@GetMapping("/hi")
public String hi() {
return service.sayHi();
}
}
👉 HelloService 在 Spring 容器中就是一个 Bean。
3️⃣ AOP(面向切面编程,Aspect-Oriented Programming)¶
概念:
AOP 通过“横切关注点(Cross-Cutting Concerns)”将日志、事务、安全等通用逻辑从业务逻辑中抽离。
这样可以避免在多个类中重复编写相同的代码。
常见横切逻辑:
- 日志记录
- 事务控制
- 权限验证
- 性能统计
AOP 的核心思想:
在不修改原有代码的前提下,动态地为方法添加额外功能。
示例:
//表示该类是一个 切面(Aspect);
//启用后,Spring AOP 会在运行时通过代理机制,在目标方法执行前后织入这些切面代码。
@Aspect
@Component
public class LogAspect {
//定义一个 前置通知(Before Advice);
@Before("execution(* com.example.demo.service.*.*(..))")
public void beforeMethod() {
System.out.println("方法开始执行");
}
//定义一个 后置通知(After Advice);
@After("execution(* com.example.demo.service.*.*(..))")
public void afterMethod() {
System.out.println("方法执行结束");
}
}
结果:
- 每次调用
service包中的任意方法,都会自动打印前后日志; - 无需修改原有业务类的任何代码。
三、Spring Boot 简介¶
Spring Boot 是 Spring 官方推出的快速开发框架,
通过“约定大于配置”的理念,让开发者无需复杂配置即可启动应用。
Spring Boot 的优势:
- 无需繁琐的 XML 配置(基于注解与自动装配)。
- 内嵌 Web 服务器(Tomcat/Jetty)。
- 内置依赖管理(Starter)。
- 一键启动运行(
main()方法即可运行)。
四、创建 Spring Boot 项目¶
Spring 官方提供了一个项目生成器网站 —— Spring Initializr,可以快速生成标准化的 Spring Boot 项目骨架。
1. 访问入口¶
打开浏览器访问:
👉 https://start.spring.io
2. 界面配置说明¶
- Project:选择构建工具
- 推荐:自定义名称(如:hello-springboot)
- Language:选择开发语言
- 推荐:Java
- Spring Boot Version:选择 Spring Boot 版本
- 推荐使用稳定版,如 3.x 系列
- Project Metadata(项目基础信息):
- Group:组织或公司域名反转(如 com.example)
- Artifact:项目名(如 hello-springboot)
- Name:应用名,默认与 Artifact 一致
- Description:项目描述(可选)
- Package name:包路径,一般自动生成
- Packaging:打包类型(推荐使用 Jar)
- Java:选择当前使用的 JDK 版本(如 17 或 21)
3. 依赖选择¶
点击 Add Dependencies 按钮添加所需模块。常见依赖有:
Spring Web:用于开发 RESTful Web 服务。Spring Boot DevTools:热部署,提高开发效率。Lombok:简化 Java 实体类代码。Spring Data JPA:数据库访问支持。
✅ 对于入门项目,只需添加
Spring Web和Spring Boot DevTools即可。
4. 生成并下载项目¶
配置完成后点击 Generate,即可下载项目压缩包。
将其解压后即可通过 IDE(如 IntelliJ IDEA、Eclipse)打开。
5. 导入到 IDEA¶
1:打开导入向导¶
在 Eclipse 顶部菜单中选择:
File → Import...
2:选择 Maven 项目导入方式(关键)¶
在导入窗口中,选择:
Maven
└─ Existing Maven Projects
然后点击 Next。
⚠️ 注意
- 不要选择 Java Project
- 不要选择 Spring Starter Project(该选项用于新建项目,而不是导入)
3:选择项目根目录(非常关键)¶
点击 Browse...,选择 包含 pom.xml 的项目根目录。
正确示例:
springboot-demo/
├─ pom.xml
├─ src/
确认后:
- ☑ 勾选扫描出来的
pom.xml - ☑(可选)勾选
Add project(s) to working sets
然后点击 Finish。
4: 等待 Maven 下载依赖¶
首次导入项目时,Eclipse 会自动下载 Maven 依赖。
- 底部状态栏会显示
Downloading from central... - 请耐心等待,不要强制中断 Eclipse
5:导入完成后的确认¶
导入完成后,请确认以下内容:
- 项目前显示 Maven 图标
pom.xml文件没有红叉- 项目结构包含:
src/main/javasrc/main/resources
如果 pom.xml 出现红叉,可执行:
右键项目 → Maven → Update Project
并勾选:
☑ Force Update of Snapshots/Releases
小结(现场项目建议)¶
- 导入已有项目时,永远使用
Existing Maven Projects - 只要
pom.xml正确,项目一定可以成功导入 - Eclipse 报红优先检查 Maven 与 JDK 配置,不要盲目重建项目
6. 项目结构说明¶
hello-springboot/
├─ src/
│ └─ main/
│ ├─ java/com/example/demo/
│ │ └─ DemoApplication.java
│ └─ resources/application.properties
└─ pom.xml
五、创建第一个 Spring Boot 项目¶
在上述项目中按照下述结构创建包和文件
hello-springboot/
├─ src/
│ └─ main/
│ ├─ java/com/example/demo/
│ │ ├─ DemoApplication.java
│ │ └─ controller/HelloController.java
│ └─ resources/application.properties
└─ pom.xml
1. 关键文件说明¶
pom.xml¶
此文件内容保持不变
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<name>hello-springboot</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
</parent>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- DevTools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
📘 DemoApplication.java¶
文件内容保持不变
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication是核心注解,整合了@Configuration、@EnableAutoConfiguration、@ComponentScan。
📘 HelloController.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!";
}
}
⚙ application.yml¶
server:
port: 8080
spring:
application:
name: hello-springboot
⚙ application.properties(对比示例)¶
server.port=8080
spring.application.name=hello-springboot
🧩 .yml 与 .properties 文件的区别与适用范围¶
-
语法格式:
.yml使用缩进表示层级关系,更简洁清晰。.properties使用key=value形式,更接近传统 Java 配置。
-
可读性:
.yml结构清晰,适合复杂配置。.properties简单直接,适合少量参数。
-
注释:
.yml使用#。.properties可使用#或!。
-
优先级:
- 若两个文件同时存在,
application.properties优先于application.yml。
- 若两个文件同时存在,
-
适用范围:
.yml推荐用于现代项目和多环境配置(如application-dev.yml)。.properties适合旧项目或迁移兼容场景。
六、运行项目¶
执行以下命令即可启动项目:
mvn spring-boot:run
或直接运行 DemoApplication.java 的 main() 方法。
浏览器访问:
👉 http://localhost:8080/hello
页面显示:
Hello Spring Boot!
七、Spring Boot 启动流程(简述)¶
- 执行
SpringApplication.run() - 加载 Spring Boot 自动配置(
@EnableAutoConfiguration) - 创建 IoC 容器,注册 Bean
- 启动内嵌 Tomcat 并监听端口
- 完成应用加载并运行
八、延伸阅读¶
| 模块 | 说明 |
|---|---|
spring-boot-starter-web |
提供 Web MVC、Tomcat、JSON 支持 |
spring-boot-starter-data-jpa |
集成 JPA 与数据库操作 |
spring-boot-starter-security |
添加安全认证与授权 |
spring-boot-starter-thymeleaf |
模板引擎支持 |
spring-boot-devtools |
热部署支持 |
💡 总结:
- Spring Boot 简化了传统 Spring 项目的复杂配置。
- 使用 Spring Initializr 可以快速生成标准项目结构。
@SpringBootApplication即可快速启动一个 Web 服务。- 推荐结合 IDEA 的 Spring Initializr 自动生成项目骨架。