【保姆级教程】2025年最新版!从零到一搭建 Spring Boot 项目,后端小白也能轻松上手!

🔥【保姆级教程】2025年最新版!从零到一搭建 Spring Boot 项目,后端小白也能轻松上手!

嗨,各位未来的大佬们好呀!👋

最近经常有刚学完 Java 基础的朋友问我:"Spring Boot 看起来好厉害,但是感觉好复杂,项目怎么搭啊?一堆配置文件看得头都大了!"

别慌!今天这篇文章就是为你量身定做的。我将手把手、一步步带你从零开始,搭建一个功能虽简但五脏俱全的 Spring Boot 项目。我们会用最主流、最高效的方式来创建项目,并集成 Web 开发数据库操作(MyBatis-Plus)Lombok 等必备神器。

这篇文章的目标是:让你不仅能成功运行 Hello World,更能清晰地理解项目结构、配置文件以及如何集成常用第三方库。 话不多说,发车!🚀

准备工作:磨刀不误砍柴工

在开始之前,请确保你的电脑上已经安装好了以下环境。这就像是做菜前的备料,必不可少哦!

  1. JDK (Java Development Kit) : 必备的 Java 开发环境。推荐使用 JDK 17 或更高版本,因为 Spring Boot 3.x 要求至少 JDK 17。
  2. Maven: 强大的项目管理工具,用来管理项目的依赖(就是你用的各种库)。
  3. IDE (集成开发环境) : 强烈推荐 IntelliJ IDEA!它对 Spring Boot 的支持简直是无敌的,能极大地提升你的开发效率。社区版也完全够用。
  4. MySQL 数据库: 我们后续会用到数据库,请确保你已经安装并可以正常连接。

小提示 :可以通过在终端或命令行输入 java -versionmvn -version 来检查 JDK 和 Maven 是否已正确安装并配置好环境变量。

第一步:创建项目 - 一切从 Spring Initializr 开始

忘记那些手动创建 pom.xml 和目录的"石器时代"方法吧!现在我们有官方神器 ------ Spring Initializr。它是一个 Web 应用,可以帮助我们像搭积木一样生成 Spring Boot 项目的骨架。

有两种方式使用它:

  1. Web 界面 :访问 start.spring.io/
  2. IDE 集成:IntelliJ IDEA 内部直接集成了 Spring Initializr,更加方便。

我们以更常用的 IntelliJ IDEA 为例进行讲解。

  1. 打开 IDEA -> New Project (新建项目)

  2. 配置项目信息 在左侧菜单选择 Spring Initializr,然后填写右侧的项目元数据:

    • Name : 项目名称,例如 my-first-app
    • Location: 项目存放的路径
    • Type : 选择 Maven
    • Group : 通常是公司或组织的域名倒写,例如 com.example
    • Artifact: 项目的唯一标识,通常和 Name 一致
    • Package name: 会自动根据 Group 和 Artifact 生成,这是你代码的主包名
    • JDK: 选择你安装好的 JDK 17 或更高版本
    • Java: 选择对应的版本
    • Packaging : 选择 Jar,这是现代微服务最常见的打包方式
  3. 添加核心依赖 (Dependencies) 这是最关键的一步!我们需要在这里选择项目启动时需要用到的库。点击 Next,我们来挑选几个最常用的:

    • Spring Web: 必选!用于构建 Web 应用,包括 RESTful API。选中它,你的项目就具备了 Web 服务器的能力(内置 Tomcat)。
    • Lombok: 神器!可以帮你自动生成 Getter/Setter、构造函数等模板代码,让你的代码无比清爽。
    • MyBatis-Plus: 数据库操作增强工具。相比于原版 MyBatis,它提供了更强大的功能和更少的 SQL 编写,对新手极其友好。
    • MySQL Driver: 连接 MySQL 数据库所必需的驱动程序。

    在搜索框里依次搜索并勾选它们。

  4. 点击 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 WebLombok 等都会记录在这里。

第三步:配置我们的"常用库"

光有架子还不行,得给它注入灵魂。我们来配置一下 application.properties 文件。

为了更清晰、更结构化,我们通常更喜欢使用 .yml 格式的配置文件。它使用缩进表示层级,比 .properties 更直观。

  1. application.properties 重命名为 application.yml
  2. 编辑 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_databaserootyour_password 替换为你自己的数据库信息!

第四步:编写第一个 API - Hello Spring Boot!

万事俱备,我们来写第一个接口,让项目真正"活"起来。

  1. 在主包名 com.example.myfirstapp 下创建一个新的包 controller
  2. controller 包下,创建一个新的 Java 类 HelloController
  3. 编写代码如下:

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

第五步:运行和测试

激动人心的时刻到了!

  1. 找到启动类 MyFirstAppApplication.java

  2. 右键点击,选择 Run 'MyFirstAppApplication' 或者直接点击旁边的绿色小三角 ▶️。

  3. 观察控制台输出。当你看到类似下面的日志,特别是 Tomcat started on port(s): 8080,就代表项目启动成功了!🎉

  4. 测试接口 打开你的浏览器,访问地址: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 的大门。记住,学习编程最好的方式就是动手实践。不断地写代码、遇到问题、解决问题,你就会越来越强!

如果觉得这篇文章对你有帮助,别忘了点赞、收藏哦!👍 我们下期再见!

相关推荐
渣哥3 小时前
从字节码到对象头:synchronized 如何实现?
java
猿究院--杨昊行3 小时前
JVM工具 相关知识
java·jvm
怪兽20143 小时前
JRE、JDK、JVM 及 JIT 之间有什么不同?
java·面试
翻斗花园刘大胆3 小时前
JavaWeb之HttpServletRequest与HttpServletResponse详解及快递管理系统实践
java·开发语言·数据库·mysql·servlet·架构·mvc
vker3 小时前
第 4 天:建造者模式(Builder Pattern)—— 创建型模式
java·后端·设计模式
Coding_Doggy3 小时前
java面试day3 | 框架篇、Spring、SpringMVC、SpringBoot、MyBatis、注解、AOP、Bean
java·mysql·面试
Li zlun3 小时前
Kubernetes 进阶实战:CRD、Gateway API 与优先级调度
java·kubernetes·gateway
Q_Q5110082853 小时前
python+springboot+uniapp微信小程序“美好食荐”系统 美食推荐 菜谱展示 用户互动 评论收藏系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
七夜zippoe4 小时前
Java 生态监控体系实战:Prometheus+Grafana+SkyWalking 整合全指南(二)
java·grafana·prometheus