🔥【保姆级教程】2025年最新版!从零到一搭建 Spring Boot 项目,后端小白也能轻松上手!
嗨,各位未来的大佬们好呀!👋
最近经常有刚学完 Java 基础的朋友问我:"Spring Boot 看起来好厉害,但是感觉好复杂,项目怎么搭啊?一堆配置文件看得头都大了!"
别慌!今天这篇文章就是为你量身定做的。我将手把手、一步步带你从零开始,搭建一个功能虽简但五脏俱全的 Spring Boot 项目。我们会用最主流、最高效的方式来创建项目,并集成 Web 开发 、数据库操作(MyBatis-Plus) 、Lombok 等必备神器。
这篇文章的目标是:让你不仅能成功运行 Hello World
,更能清晰地理解项目结构、配置文件以及如何集成常用第三方库。 话不多说,发车!🚀
准备工作:磨刀不误砍柴工
在开始之前,请确保你的电脑上已经安装好了以下环境。这就像是做菜前的备料,必不可少哦!
- JDK (Java Development Kit) : 必备的 Java 开发环境。推荐使用 JDK 17 或更高版本,因为 Spring Boot 3.x 要求至少 JDK 17。
- Maven: 强大的项目管理工具,用来管理项目的依赖(就是你用的各种库)。
- IDE (集成开发环境) : 强烈推荐 IntelliJ IDEA!它对 Spring Boot 的支持简直是无敌的,能极大地提升你的开发效率。社区版也完全够用。
- MySQL 数据库: 我们后续会用到数据库,请确保你已经安装并可以正常连接。
小提示 :可以通过在终端或命令行输入
java -version
和mvn -version
来检查 JDK 和 Maven 是否已正确安装并配置好环境变量。
第一步:创建项目 - 一切从 Spring Initializr 开始
忘记那些手动创建 pom.xml
和目录的"石器时代"方法吧!现在我们有官方神器 ------ Spring Initializr。它是一个 Web 应用,可以帮助我们像搭积木一样生成 Spring Boot 项目的骨架。
有两种方式使用它:
- Web 界面 :访问 start.spring.io/
- IDE 集成:IntelliJ IDEA 内部直接集成了 Spring Initializr,更加方便。
我们以更常用的 IntelliJ IDEA 为例进行讲解。
-
打开 IDEA -> New Project (新建项目)
-
配置项目信息 在左侧菜单选择 Spring Initializr,然后填写右侧的项目元数据:
- Name : 项目名称,例如
my-first-app
- Location: 项目存放的路径
- Type : 选择 Maven
- Group : 通常是公司或组织的域名倒写,例如
com.example
- Artifact: 项目的唯一标识,通常和 Name 一致
- Package name: 会自动根据 Group 和 Artifact 生成,这是你代码的主包名
- JDK: 选择你安装好的 JDK 17 或更高版本
- Java: 选择对应的版本
- Packaging : 选择 Jar,这是现代微服务最常见的打包方式
- Name : 项目名称,例如
-
添加核心依赖 (Dependencies) 这是最关键的一步!我们需要在这里选择项目启动时需要用到的库。点击 Next,我们来挑选几个最常用的:
- Spring Web: 必选!用于构建 Web 应用,包括 RESTful API。选中它,你的项目就具备了 Web 服务器的能力(内置 Tomcat)。
- Lombok: 神器!可以帮你自动生成 Getter/Setter、构造函数等模板代码,让你的代码无比清爽。
- MyBatis-Plus: 数据库操作增强工具。相比于原版 MyBatis,它提供了更强大的功能和更少的 SQL 编写,对新手极其友好。
- MySQL Driver: 连接 MySQL 数据库所必需的驱动程序。
在搜索框里依次搜索并勾选它们。
-
点击 Create,等待项目初始化 IDEA 会自动从网络上下载所需的依赖库并构建项目。这个过程可能需要几分钟,取决于你的网络速度。完成后,你会看到一个标准的 Maven 项目结构。
第二步:认识你的项目结构
项目创建好了,我们先来"巡视"一下我们的新家,看看各个文件和目录都是干啥的:
Bash
scss
my-first-app
├── .mvn
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── myfirstapp
│ │ │ └── MyFirstAppApplication.java // ✨ 程序入口!
│ │ └── resources
│ │ ├── static // 存放静态资源,如CSS,JS
│ │ ├── templates // 存放模板文件,如Thymeleaf
│ │ └── application.properties // 🔥 核心配置文件!
│ └── test
│ └── ...
├── pom.xml // 🚀 Maven 配置文件!
└── ...
MyFirstAppApplication.java
: 这是整个 Spring Boot 应用的启动类,里面有一个main
方法。运行它,项目就启动了。application.properties
: 项目的核心配置文件。数据库连接信息、服务器端口等所有配置都在这里。pom.xml
: Maven 的灵魂。它定义了项目信息、依赖库、插件等。我们之前选择的Spring Web
、Lombok
等都会记录在这里。
第三步:配置我们的"常用库"
光有架子还不行,得给它注入灵魂。我们来配置一下 application.properties
文件。
为了更清晰、更结构化,我们通常更喜欢使用 .yml
格式的配置文件。它使用缩进表示层级,比 .properties
更直观。
- 将
application.properties
重命名为application.yml
。 - 编辑
application.yml
文件,添加以下内容:
YAML
yaml
# 服务器端口配置
server:
port: 8080 # 你可以改成任何你喜欢的端口,比如 8888
# Spring Boot 应用基本配置
spring:
application:
name: my-first-app # 应用名称
# 数据库连接配置
datasource:
url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root # 你的数据库用户名
password: your_password # 你的数据库密码
driver-class-name: com.mysql.cj.jdbc.Driver
# MyBatis-Plus 配置
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml # 指定 Mapper XML 文件的位置
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启控制台 SQL 日志,方便调试
注意 :请将
your_database
、root
和your_password
替换为你自己的数据库信息!
第四步:编写第一个 API - Hello Spring Boot!
万事俱备,我们来写第一个接口,让项目真正"活"起来。
- 在主包名
com.example.myfirstapp
下创建一个新的包controller
。 - 在
controller
包下,创建一个新的 Java 类HelloController
。 - 编写代码如下:
Java
kotlin
package com.example.myfirstapp.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 1. 告诉 Spring 这是一个控制器,并且返回的是 JSON 数据
public class HelloController {
@GetMapping("/hello") // 2. 将这个方法映射到 HTTP GET 请求的 /hello 路径
public String sayHello() {
return "Hello, Spring Boot! 我是 Gemini~";
}
}
代码解释:
@RestController
: 这是一个组合注解,相当于@Controller
+@ResponseBody
。它告诉 Spring,这个类里的所有方法返回的都是数据(比如字符串、JSON 对象),而不是视图(比如 JSP 页面)。@GetMapping("/hello")
: 将sayHello()
方法与一个 HTTP GET 请求绑定起来,访问路径是/hello
。
第五步:运行和测试
激动人心的时刻到了!
-
找到启动类
MyFirstAppApplication.java
。 -
右键点击,选择
Run 'MyFirstAppApplication'
或者直接点击旁边的绿色小三角 ▶️。 -
观察控制台输出。当你看到类似下面的日志,特别是
Tomcat started on port(s): 8080
,就代表项目启动成功了!🎉 -
测试接口 打开你的浏览器,访问地址:http://localhost:8080/hello
如果一切顺利,你会在页面上看到:
Hello, Spring Boot! 我是 Gemini~
恭喜你!你已经成功搭建并运行了你的第一个 Spring Boot 应用!
第六步:整合数据库 - 实践出真知
只返回一个字符串太单调了。接下来,我们来做一个完整的从数据库查询数据的例子。
假设我们数据库里有一张 user
表:
SQL
sql
CREATE TABLE `user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL,
`age` INT NULL,
PRIMARY KEY (`id`)
);
-- 插入一条测试数据
INSERT INTO `user` (`id`, `name`, `age`) VALUES ('1', 'Gemini', '1');
1. 创建实体类 (Entity) 在 com.example.myfirstapp
下创建 entity
包,然后创建 User.java
类。
Java
kotlin
package com.example.myfirstapp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data // Lombok 注解:自动生成 Getter, Setter, toString, equals, hashCode 等方法
@TableName("user") // MyBatis-Plus 注解:指定该实体类对应数据库中的 'user' 表
public class User {
@TableId(type = IdType.AUTO) // 指定主键,并设置为主键自增
private Long id;
private String name;
private Integer age;
}
2. 创建 Mapper 接口 在 com.example.myfirstapp
下创建 mapper
包,然后创建 UserMapper.java
接口。
Java
java
package com.example.myfirstapp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.myfirstapp.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper // 告诉 MyBatis 这是一个 Mapper 接口,Spring 会扫描并创建代理实现
public interface UserMapper extends BaseMapper<User> {
// 继承 BaseMapper 后,就自动拥有了 CRUD 等超多好用的方法!
// 无需编写任何 SQL!
}
3. 配置 Mapper 扫描 我们需要告诉 Spring Boot 去哪里找我们的 Mapper 接口。在启动类 MyFirstAppApplication.java
上添加一个注解:
Java
kotlin
package com.example.myfirstapp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.myfirstapp.mapper") // ✨ 添加这一行!
public class MyFirstAppApplication {
public static void main(String[] args) {
SpringApplication.run(MyFirstAppApplication.class, args);
}
}
4. 创建 Service (可选但推荐) 为了让业务逻辑和数据访问分离,我们通常会创建一个 Service 层。
在 com.example.myfirstapp
下创建 service
包,创建 UserService.java
接口和其实现类 UserServiceImpl.java
。
Java
scala
// UserService.java
package com.example.myfirstapp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.myfirstapp.entity.User;
public interface UserService extends IService<User> {
}
// UserServiceImpl.java
package com.example.myfirstapp.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.myfirstapp.entity.User;
import com.example.myfirstapp.mapper.UserMapper;
import org.springframework.stereotype.Service;
@Service // 标记为 Spring 的一个服务组件
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
通过继承
ServiceImpl
,我们的UserService
也自动拥有了大量的通用业务方法。这就是 MyBatis-Plus 的强大之处!
5. 在 Controller 中调用 Service 最后,改造一下我们的 HelloController
,让它能根据 id 查询用户信息。
Java
kotlin
package com.example.myfirstapp.controller;
import com.example.myfirstapp.entity.User;
import com.example.myfirstapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired // 依赖注入:让 Spring 自动把 UserService 实例赋给我们
private UserService userService;
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot! 我是 Gemini~";
}
// 新增一个接口,通过 ID 查询用户
// 例如:访问 /user/1 就会查询 ID 为 1 的用户
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getById(id);
}
}
6. 重启并测试 重新运行 MyFirstAppApplication
,然后用浏览器访问 http://localhost:8080/user/1。
你将会看到浏览器返回一个 JSON 格式的数据:
JSON
json
{
"id": 1,
"name": "Gemini",
"age": 1
}
太棒了!你已经完成了从 Controller -> Service -> Mapper -> 数据库的完整调用链路!
总结与展望
恭喜你坚持看到了这里!我们一起从零开始,使用 Spring Initializr 快速创建了一个 Spring Boot 项目,理解了它的基本结构,配置了服务器端口和数据库,并亲手编写了两个 API 接口,其中一个还实现了完整的数据库查询功能。
这只是你 Spring Boot 旅程的开始。接下来,你可以继续探索:
- 参数校验:如何验证前端传来的参数是否合法?
- 统一异常处理:如何优雅地处理代码中出现的各种异常?
- Spring Security:如何为你的应用添加用户认证和授权?
- Docker 打包部署:如何将你的应用打包成镜像并部署到服务器?
希望这篇保姆级教程能为你打开 Spring Boot 的大门。记住,学习编程最好的方式就是动手实践。不断地写代码、遇到问题、解决问题,你就会越来越强!
如果觉得这篇文章对你有帮助,别忘了点赞、收藏哦!👍 我们下期再见!