Spring Boot 入门教程:60分钟快速上手

AICloud
2025-06-17 01:12
阅读 406

开篇:Spring Boot 是什么?我能用它做什么?

开篇:Spring Boot 是什么?我能用它做什么?

在我们开始学习 Spring Boot 之前,先来了解一下它是谁,以及它可以帮我们做什么。

Spring Boot 是谁?

Spring Boot 是一个由 Pivotal 团队开发的开源 Java 框架。它的核心理念是“开箱即用”,也就是说,你可以非常快速地搭建一个独立运行、生产级的应用程序,而不需要去繁琐地配置太多东西。

我们可以把它看作是一个 “Java 应用加速包”。如果你曾经使用过传统的 Spring 框架,你一定知道,要启动一个完整的 Spring 项目需要配置很多 XML 文件,还要导入各种依赖库。这在刚入门的时候会让人觉得特别麻烦,甚至有些令人望而却步。

Spring Boot 则简化了这些步骤,它内置了很多常用的功能和默认配置,让你可以专注于写代码本身,而不是花大量时间去配置各种环境。

我能用它做什么?

Spring Boot 特别适合用来开发企业级应用,比如后台管理系统、电商平台、金融系统等等。同时,它也非常适合构建 RESTful API 接口(也就是前后端分离项目中的后端部分)。你可以在很短的时间内搭建一个功能完善的 Web 服务,并且可以根据需求灵活扩展。

举个简单的例子:假设你想做一个博客网站的后端服务,你就可以用 Spring Boot 来创建一个项目,然后很快实现文章管理、用户注册登录、评论留言等功能。整个过程中,几乎不用自己手动去配置数据库连接、服务器设置等繁琐的工作,因为它已经帮你做好了。

总结一下:

  • Spring Boot 是什么? 它是一个简化 Java 开发的框架,让开发者能够更快速地开发出高质量的 Web 应用。
  • 你能用它做什么? 创建后端服务、REST API、微服务系统等,非常适合现代互联网企业的开发需求。

接下来,我们就从零开始一步步带你进入 Spring Boot 的世界!


环境准备:快速搭建你的第一个 Spring Boot 项目

环境准备:快速搭建你的第一个 Spring Boot 项目

在正式编写 Spring Boot 应用之前,我们需要准备好开发环境。虽然听上去有点复杂,但实际上只要按照下面几步来做,十分钟就能完成所有的安装和配置!

步骤一:安装 Java JDK

Spring Boot 是基于 Java 构建的,所以我们首先要确保电脑上有 Java 运行环境。建议安装 JDK 17 或更新版本。

Windows 用户:

  1. 访问 Oracle JDK 下载页面
  2. 选择合适的版本下载并安装(推荐选择 .msi 安装包)。
  3. 安装完成后,在命令提示符中输入以下命令验证是否安装成功:
java -version

如果出现类似如下的输出,说明安装成功:

java version "17.0.3" 2022-04-19 LTS
Java(TM) SE Runtime Environment (build 17.0.3+8-LTS-111)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.3+8-LTS-111, mixed mode, sharing)

macOS/Linux 用户:

同样访问上述链接,根据你的操作系统下载对应版本并安装。

步骤二:安装 IDE(推荐 IntelliJ IDEA)

IDE(集成开发环境)就像是程序员的“画板”,用来编写、调试和运行代码。我们推荐使用 IntelliJ IDEA Community Edition(社区版),这是一个完全免费的强大工具。

安装步骤:

  1. 前往 IntelliJ IDEA 下载页面
  2. 根据系统下载 Community 版本(不要选 Ultimate 版,那是付费的)。
  3. 解压安装包,双击打开即可安装。
  4. 安装完成后启动 IDEA,按提示完成初始设置。

步骤三:创建 Spring Boot 项目

现在我们要使用 Spring Initializr 来创建一个新的 Spring Boot 项目。这是一个在线生成器,可以帮助我们快速生成基础项目结构。

操作步骤:

  1. 打开浏览器,访问 https://start.spring.io/
  2. 在表单中填写如下信息:
    • Project:Maven(Java 构建工具)
    • Language:Java
    • Spring Boot Version:选择最新稳定版,比如 3.x.x(当前版本可能略有不同)
    • Group:填入组织名称,例如 com.example
    • Artifact:项目的名称,比如 demo
    • NamePackage Name 保持默认即可
  3. Dependencies(依赖项) 部分添加以下几个模块:
    • Spring Web(用于构建 Web 应用)
    • Spring Data JPA(用于数据库操作)
    • H2 Database(测试用的轻量级数据库)
  4. 点击下方按钮 Generate,系统将自动生成一个 ZIP 格式的项目压缩包。
  5. 解压这个 ZIP 包,用 IntelliJ IDEA 打开这个文件夹(File -> Open -> 找到解压后的文件夹)。

启动项目:

  1. 打开 IDEA,等待 Maven 自动导入依赖。
  2. 寻找主类(带有 @SpringBootApplication 注解的类),通常位于 src/main/java/com/example/demo/DemoApplication.java
  3. 右键点击该类,选择 Run 'DemoApplication'
  4. 控制台中看到类似以下信息表示项目已成功启动:
Started DemoApplication in X.X seconds (JVM running for X.X)

至此,我们的 Spring Boot 项目就准备好了!接下来,我们将通过一个小项目快速掌握它的基本用法。


Spring Boot 核心概念讲解

Spring Boot 核心概念讲解

在开始实战之前,我们先来了解几个 Spring Boot 中的核心概念。它们就像是组成房子的基本砖瓦,理解清楚之后,你在编写项目时就会更加得心应手。

1. Controller(控制器)

想象一下你正在设计一个餐厅的点餐系统。顾客说:“我要一份牛肉面。”这个时候你需要有一个服务员来接收请求并对厨房下订单。在 Spring Boot 里,“Controller”就是这个服务员的角色。

简单来说,Controller 就是用来处理 HTTP 请求的对象。它可以接受用户的访问,并决定返回什么样的数据。最常见的就是网页访问、API 接口等。

示例代码:

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "你好,欢迎来到我的网站!";
    }
}

当你启动应用并访问 http://localhost:8080/hello 时,你会看到页面显示一句话:“你好,欢迎来到我的网站!”

在这个例子中:

  • @RestController 表示这是一个控制器类;
  • @GetMapping 用于定义 GET 请求的路径;
  • sayHello() 方法返回的内容会直接显示在网页上。

2. Service(服务层)

继续刚才那个例子:当服务员接收到请求后,他会去找厨师做菜。这个“厨师”在 Spring Boot 中就是 Service 层。Service 层负责执行实际的业务逻辑,比如对数据进行计算、处理、调用第三方接口等。

示例代码:

@Service
public class GreetingService {
    public String greet(String name) {
        return "你好," + name + "!";
    }
}

接着我们修改上面的 HelloController,让它调用这个服务:

@RestController
public class HelloController {

    @Autowired
    private GreetingService greetingService;

    @GetMapping("/greet/{name}")
    public String greet(@PathVariable String name) {
        return greetingService.greet(name);
    }
}

这里发生了什么呢?

  • @Service 表示这是一个服务类;
  • @Autowired 是自动注入,Spring Boot 会自动把 GreetingService 实例放进 HelloController
  • @PathVariable 用于从 URL 中提取参数,比如 /greet/zhangsan,name 就是 zhangsan
  • 最终调用了 greetingService.greet(name),并返回给用户。

这样我们就可以通过访问 http://localhost:8080/greet/zhangsan 得到一句个性化的问候语:“你好,张三!”

3. Repository(数据访问层)

现在让我们再加一个角色——仓库管理员。他负责管理食材,也就是“原材料”的存储和查找。在 Spring Boot 中,Repository 层负责与数据库交互,比如增删改查等操作。

我们以最简单的实体为例:用户表。

实体类:

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getter 和 Setter(此处省略)
}

这里的注解说明:

  • @Entity 表示这是数据库中的一张表;
  • @Id 表示这是主键;
  • @GeneratedValue 表示主键是自增长的;
  • nameemail 是字段名,默认会映射为数据库列名。

接下来我们来写一个 Repository 接口:

public interface UserRepository extends JpaRepository<User, Long> {
}

没错,这就是一个接口,它继承了 JpaRepository,Spring Boot 会自动为我们实现 CRUD 操作(增删改查)。

4. 总结

我们再来理清这几个概念的关系:

层级 角色 职责
Controller 用户对接窗口 接收请求、调用服务并返回结果
Service 业务处理中心 处理逻辑、调用 Repository 操作数据
Repository 数据访问接口 直接与数据库打交道,执行增删改查

打个比方,就像是一家公司:

  • Controller 是前台接待员,接待客户;
  • Service 是部门主管,处理具体事务;
  • Repository 是档案管理员,查找和修改资料。

明白了这些核心概念之后,我们就可以开始动手做一个完整的小项目啦!


实战项目:用 Spring Boot 搭建一个简单的博客系统

缓存策略对比-1

接下来我们将通过一个简单的博客系统项目来巩固前面学到的知识。这个项目主要包括:

  • 文章列表展示
  • 发布新文章
  • 删除指定文章

让我们一步步跟着做,动手写代码!

第一步:定义文章实体类

首先我们需要一个数据模型来表示一篇文章。我们创建一个名为 Post 的类,并加上相应的注解:

@Entity
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;  // 标题
    private String content; // 内容
    private LocalDateTime publishedDate; // 发布时间

    // Getter 和 Setter(此处省略)
}

这个类中的注解我们在前文已经见过:

  • @Entity 表示它对应数据库中的一张表;
  • @Id 表示这是主键;
  • @GeneratedValue 表示主键是自增的;
  • LocalDateTime 是 Java 8 引入的新时间日期类型。

第二步:创建文章数据访问接口

接下来我们需要一个 Repository 接口,用于操作 Post 表的数据:

public interface PostRepository extends JpaRepository<Post, Long> {
}

这个接口非常简洁,因为 JpaRepository 已经提供了常用的增删改查方法。

第三步:编写文章服务类

为了处理文章相关的业务逻辑,我们来写一个服务类:

@Service
public class PostService {
    @Autowired
    private PostRepository postRepository;

    public List<Post> getAllPosts() {
        return postRepository.findAll();
    }

    public Post createPost(Post post) {
        post.setPublishedDate(LocalDateTime.now());
        return postRepository.save(post);
    }

    public void deletePostById(Long id) {
        postRepository.deleteById(id);
    }
}

解释一下关键代码:

  • getAllPosts() 获取所有文章;
  • createPost() 新增一篇文章,并自动设置发布时间;
  • deletePostById() 根据 ID 删除文章;
  • postRepository.save()deleteById() 都是 Spring Boot 提供的默认方法。

第四步:编写控制器

最后,我们需要一个控制器来接收外部请求:

@RestController
@RequestMapping("/api/posts")
public class PostController {

    @Autowired
    private PostService postService;

    @GetMapping
    public List<Post> getAllPosts() {
        return postService.getAllPosts();
    }

    @PostMapping
    public Post createPost(@RequestBody Post post) {
        return postService.createPost(post);
    }

    @DeleteMapping("/{id}")
    public void deletePost(@PathVariable Long id) {
        postService.deletePostById(id);
    }
}

这段代码的功能如下:

  • @RestController 表示这是一个返回 JSON 数据的控制器;
  • @RequestMapping("/api/posts") 统一设定请求路径前缀;
  • @GetMapping 对应获取所有文章;
  • @PostMapping 对应新增文章;
  • @DeleteMapping 对应删除文章;
  • @RequestBody 表示参数是从请求体中读取的 JSON 数据;
  • @PathVariable 用于获取路径中的变量。

第五步:测试项目

现在我们来验证一下这个博客系统能不能正常工作。

启动项目后,你可以使用 Postman 或 curl 命令来进行测试。

1. 获取所有文章:

发送一个 GET 请求:

curl http://localhost:8080/api/posts

此时应该返回一个空数组,因为我们还没有添加任何文章。

2. 添加一篇新文章:

发送一个 POST 请求:

curl -X POST http://localhost:8080/api/posts \
  -H "Content-Type: application/json" \
  -d '{"title": "第一天写作", "content": "今天我写了人生第一篇文章"}'

你应该能看到类似如下的返回内容,其中包含了自动设置的发布时间和 ID:

{
  "id": 1,
  "title": "第一天写作",
  "content": "今天我写了人生第一篇文章",
  "publishedDate": "2024-03-24T15:30:00"
}

3. 删除一篇文章:

发送一个 DELETE 请求:

curl -X DELETE http://localhost:8080/api/posts/1

执行后再查看所有文章,你会发现那条记录已经被删除了。


新手常见问题解答

作为初学者,刚开始接触 Spring Boot 时可能会遇到一些常见的小问题。下面是几个大家经常问的问题,以及对应的解决办法。

1. 为什么启动 Spring Boot 项目时一直卡住?

原因分析: Spring Boot 启动慢有很多可能的原因,比如本地网络问题导致依赖下载失败、本地磁盘空间不足、JDK 版本兼容性问题、IDEA 缓存异常等。

解决办法:

  • 检查你的网络连接是否正常,特别是在使用 Maven 下载依赖时;
  • 尝试清理 Maven 缓存目录(通常在 C:\Users\用户名\.m2\repository);
  • 更新 IntelliJ IDEA 到最新版本;
  • 如果怀疑是 JDK 问题,可以尝试更换为另一个 JDK 版本(如从 11 升级到 17)。

2. 访问不到接口,提示 404

原因分析: 404 表示找不到请求的资源。有可能是你写错了路径,也可能是 Spring Boot 没有正确扫描到你的 Controller。

解决办法:

  • 检查你的 @RequestMapping@GetMapping 是否写对了;
  • 查看启动日志中是否有 Mapped 字样的信息,例如 Mapped [GET /api/posts] onto public java.util.List...,如果没看到相关输出,说明 Controller 没有被加载;
  • 确保你的 Controller 类上有 @RestController 注解;
  • 主类所在的包是否包含 Controller 类(Spring Boot 默认只会扫描主类所在包及其子包)。

3. 无法注入 Service 或 Repository

错误提示: 有时候你会遇到 NullPointerException 或者 IDEA 报错说某个类没有被注入。

解决办法:

  • 检查 Service 或 Repository 是否加了 @Service@Repository 注解;
  • 检查使用的地方是否正确使用了 @Autowired
  • 如果你使用了构造函数注入,请确保构造函数被正确标注为 @Autowired(虽然不太常见);
  • 确保主类所在的包包含你要使用的组件(Spring Boot 只会在主类所在包及其子包中查找 Bean)。

4. 数据库连接失败或报错

错误提示: 启动时报错 Connection refusedUnknown database

解决办法:

  • 如果使用的是 H2 数据库,请检查 application.properties 中的配置是否正确;
  • 如果使用 MySQL 或 PostgreSQL,请确认用户名、密码是否正确,以及数据库是否真的存在;
  • 如果是第一次运行项目,Spring Boot 默认会自动建表,但不会自动创建数据库;
  • 可以尝试关闭数据库防火墙,或者重新安装数据库服务。

5. 不知道下一步该怎么学怎么办?

建议:

  • 从官方文档入手,熟悉 Spring Boot 的核心功能和特性;
  • 动手练习更多小项目,比如员工管理系统、购物车、留言本等;
  • 学习一些常用的中间件,比如 Redis 缓存、消息队列 RabbitMQ、定时任务 Quartz 等;
  • 逐步深入 Spring Cloud,学会微服务架构设计;
  • 了解 Spring Security 权限控制,为后续开发安全系统打基础。

下一步学习路径建议

恭喜你完成了今天的 Spring Boot 入门之旅!现在你已经掌握了它的基本使用方法,并且可以通过实践项目来加深理解。不过,这只是 Spring Boot 世界的第一步,接下来你可以沿着以下几个方向继续探索。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝