1. 引言
Spring 是 Java 领域最受欢迎的企业级应用开发框架之一。它通过提供全面的编程和配置模型,简化了企业级 Java 应用的开发,使其更加模块化、可测试和可维护。无论是构建微服务、Web 应用还是数据访问层,Spring 都提供了强大的支持。
本文将带你从零开始,了解 Spring 的核心概念,并动手搭建你的第一个 Spring Boot 应用。
2. Spring 核心概念
在深入代码之前,理解 Spring 的几个核心概念至关重要:
- 控制反转 (IoC):这是 Spring 的基石。传统上,对象自己负责创建和管理其依赖。而在 IoC 模式下,这个责任被转移给了"容器"(Spring IoC 容器)。你只需定义好对象(Bean)及其依赖关系,容器负责实例化、组装和管理它们的生命周期。
- 依赖注入 (DI):这是实现 IoC 的一种具体方式。Spring 容器通过构造函数、Setter 方法或字段直接将依赖对象"注入"到目标对象中,而不是让目标对象自己去查找或创建依赖。
- 面向切面编程 (AOP):允许你将跨越应用程序多个模块的横切关注点(如日志、事务、安全)模块化。AOP 让你能专注于核心业务逻辑,而将通用功能(切面)分离出来。
- Spring Boot:Spring 的一个子项目,旨在简化 Spring 应用的初始搭建和开发过程。它通过"约定大于配置"的原则,提供了自动配置、内嵌 Web 服务器(如 Tomcat)和"起步依赖"(Starter),让你能快速创建独立运行的、生产级的 Spring 应用。
3. 环境准备
开始之前,请确保你的开发环境已就绪:
- Java 开发工具包 (JDK):Spring Boot 3.x 需要 JDK 17 或更高版本。推荐使用 JDK 17 或 21。
- 构建工具:可以选择 Maven 或 Gradle。本文将以 Maven 为例。
- 集成开发环境 (IDE):推荐使用 IntelliJ IDEA(社区版或旗舰版)、Spring Tools Suite (STS) 或 VS Code。
- 网络连接:用于从 Maven 中央仓库下载依赖。
4. 创建第一个 Spring Boot 应用
我们将使用 Spring Initializr 来快速生成项目骨架,这是 Spring 官方提供的项目初始化工具。
步骤 1:访问 Spring Initializr
打开浏览器,访问 https://start.spring.io。
步骤 2:配置项目
在页面上进行如下配置:
- Project: Maven
- Language: Java
- Spring Boot: 选择最新的稳定版本(如 3.x.x)
- Group :
com.example(你的组织域名,可自定义) - Artifact :
demo(你的项目名,可自定义) - Name :
demo - Description :
Demo project for Spring Boot - Package name :
com.example.demo - Packaging: Jar
- Java: 17 或 21
步骤 3:添加依赖
在 Dependencies 区域,点击 "ADD DEPENDENCIES",搜索并添加:
- Spring Web: 用于构建 Web 应用,包含 RESTful API 支持。
步骤 4:生成项目
点击页面底部的 GENERATE 按钮,下载生成的 demo.zip 文件。
步骤 5:导入项目
解压 demo.zip 文件,并用你的 IDE(如 IntelliJ IDEA)打开解压后的文件夹。
5. 项目结构与代码
导入项目后,你会看到类似如下的目录结构:
demo/
├── src/
│ ├── main/
│ │ ├── java/com/example/demo/
│ │ │ ├── DemoApplication.java // 主启动类
│ │ │ └── controller/ // (待创建) 控制器层
│ │ └── resources/
│ │ ├── static/ // 静态资源
│ │ ├── templates/ // 模板文件
│ │ └── application.properties // 配置文件
│ └── test/ // 测试代码
└── pom.xml // Maven 配置文件
步骤 6:创建 REST 控制器
在 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.RestController;
@RestController // 声明这是一个 REST 控制器
public class HelloController {
@GetMapping("/hello") // 映射 HTTP GET 请求到 /hello 路径
public String sayHello() {
return "Hello, Spring Boot!";
}
}
步骤 7:运行应用
找到 src/main/java/com/example/demo/DemoApplication.java 文件,这是 Spring Boot 应用的入口。直接运行其中的 main 方法。
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);
}
}
控制台会输出大量日志,当你看到类似 Tomcat started on port(s): 8080 (http) 的信息时,说明应用已成功启动。
步骤 8:测试应用
打开浏览器或使用 curl 命令,访问 http://localhost:8080/hello。你将看到页面上显示:Hello, Spring Boot!
恭喜!你的第一个 Spring Boot 应用已经成功运行。
6. 核心注解解析
让我们回顾一下代码中用到的几个关键注解:
@SpringBootApplication:这是一个组合注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。它标记了主配置类,并开启了 Spring Boot 的自动配置和组件扫描。@RestController:组合了@Controller和@ResponseBody。它告诉 Spring 这个类是一个控制器,并且其所有方法的返回值都应直接写入 HTTP 响应体,而不是跳转到视图。@GetMapping:是@RequestMapping(method = RequestMethod.GET)的简写。它将 HTTP GET 请求映射到特定的处理方法上。