Springboot | 初识Springboot 从“手动做饭”到“点外卖”的编程革命

一文读懂Spring Boot:从"手动做饭"到"点外卖"的编程革命

如果你是编程新手,可能听过"Spring"这个词,但总觉得它像个复杂的"大厨房"------要自己买菜、切菜、调火候,少一步就可能搞砸。而今天要聊的Spring Boot,就像把这个大厨房变成了"外卖平台":你只管说要"宫保鸡丁",它直接给你做好送到手上,不用管锅碗瓢盆。

一、Spring Boot到底是什么?

先举个生活例子:

想喝一杯奶茶,传统方式是:自己买茶叶、牛奶、糖,煮茶、调比例、冷藏(步骤多且容易出错);

而Spring Boot就像"奶茶店":你说"要一杯珍珠奶茶",店员直接给你做好,不用管茶叶放多少、牛奶烫到多少度。

专业解释:Spring Boot是基于Spring的"简化工具",它帮我们省略了Spring开发中繁琐的配置(比如XML文件、手动导包),让开发者能快速搭建一个可运行的项目。

二、为什么要用Spring Boot?

假设你要开一家小超市(开发一个简单的Web应用):

  • 传统Spring:你得自己找店面(配置服务器)、买货架(导入依赖)、画价签(写XML配置),折腾半天还没开始进货(写业务逻辑);
  • Spring Boot:店面自带货架(内置服务器)、货架上自动摆好常用商品(starter依赖)、价签自动生成(自动配置),你直接进货就行。

核心优势总结:

  1. 少配置:不用写大量XML,注解+默认配置搞定80%需求;
  2. 快启动:内置Tomcat等服务器,直接运行Java类就能启动项目;
  3. 易扩展:需要新功能时,加个依赖(比如连接数据库)就行,不用改原有配置。

三、Spring Boot核心特性

1. 自动配置(Auto-configuration)

就像去咖啡店点"美式咖啡":默认是黑咖啡,不用你说"不加奶不加糖"------Spring Boot会根据你导入的依赖,自动配置好相关功能。

比如你导入了spring-boot-starter-web依赖(Web开发套餐),它会自动配置好Tomcat服务器、Spring MVC框架,你直接写接口就行。

2. Starter依赖(Starter Dependencies)

类似"火锅底料套餐":买一包"麻辣火锅底料",里面已经有辣椒、花椒、香料,不用单独买。

Spring Boot的starter就是"功能套餐":

  • spring-boot-starter-web:Web开发套餐(含Tomcat、MVC);
  • spring-boot-starter-data-jpa:数据库操作套餐(含ORM框架);
  • spring-boot-starter-test:测试套餐(含Junit、Mockito)。

3. 嵌入式服务器(Embedded Servers)

传统开发需要手动装Tomcat、配置端口;Spring Boot把Tomcat"打包"进项目,就像"自热火锅"------不用找锅,自带加热包,拆开就能用。

4. actuator(监控功能)

就像家里的"智能电表":实时显示用电量,出问题时提醒你。

Spring Boot的actuator可以监控项目健康状态、内存使用、接口调用量,方便排查问题。

四、动手实践:用Spring Boot做一个"图书小管家"

我们来做一个简单的功能:记录图书信息(书名、作者),能查询所有图书,也能添加新图书。

步骤1:创建项目(像搭积木一样简单)

  1. 打开 Spring Initializr(Spring官方项目生成器);
  2. 填写信息:
    • Project:Maven(包管理工具);
    • Language:Java;
    • Spring Boot:选最新稳定版(比如3.5.6);
    • 填写Group(组织名,比如com.example)和Artifact(项目名,比如bookmanager);
  3. 选依赖:左侧搜Spring Web(Web功能),勾选后点"Generate"下载项目压缩包。

步骤2:解压项目,用IDE打开(比如IDEA、VSCode)

项目结构像这样(重点看这几个文件):

复制代码
bookmanager/
├─ src/
│  ├─ main/
│  │  ├─ java/
│  │  │  └─ com/example/bookmanager/
│  │  │     └─ BookmanagerApplication.java  // 启动类
│  │  └─ resources/
│  │     └─ application.properties  // 配置文件
└─ pom.xml  // 依赖管理(类似购物清单)


打开pom.xml文件,可以看到我们在初始化工具里选择的依赖项都已填写好。

步骤3:写代码(核心功能实现)

① 定义"图书"实体(像给图书做个"身份证")

新建com.example.bookmanager.entity.Book类:

java 复制代码
package com.example.bookmanager.entity;

public class Book {
    private Long id;  // 图书编号
    private String name;  // 书名
    private String author;  // 作者

    // 构造方法(方便创建对象)
    public Book(Long id, String name, String author) {
        this.id = id;
        this.name = name;
        this.author = author;
    }

    // Getter和Setter(让外部能读取/修改属性)
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getAuthor() { return author; }
    public void setAuthor(String author) { this.author = author; }
}

若引入Lombok,并在类名上增加@Data注解,可不用写构造函数和setter及getter。

② 写控制器(处理用户请求,像超市收银员)

新建com.example.bookmanager.controller.BookController类:

java 复制代码
package com.example.bookmanager.controller;

import com.example.bookmanager.entity.Book;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;

@RestController  // 标记这是一个处理HTTP请求的控制器
public class BookController {

    // 用List暂存图书(实际项目应该用数据库,这里简化)
    private final List<Book> books = new ArrayList<>();
    // 自动生成唯一ID(AtomicLong保证多线程安全)
    private final AtomicLong idGenerator = new AtomicLong();
    
    // 0. 初始化两本书的演示数据
    @GetMapping("/init")
    public String doInit() {
        Book b1 = new Book();
        b1.setId(idGenerator.incrementAndGet());
        b1.setAuthor("刘慈欣");
        b1.setName("三体");
        books.add(b1);

        Book b2 = new Book();
        b2.setId(idGenerator.incrementAndGet());
        b2.setAuthor("罗贯中");
        b2.setName("三国");
        books.add(b2);
        return new String();
    }

    // 1. 查询所有图书:GET请求,访问路径 /books
    @GetMapping("/books")
    public List<Book> getAllBooks() {
        return books;  // 直接返回图书列表
    }

    // 2. 添加图书:POST请求,访问路径 /books,参数从请求体拿
    @PostMapping("/books")
    public Book addBook(@RequestBody Book book) {
        // 生成新ID并设置给图书
        Long newId = idGenerator.incrementAndGet();
        book.setId(newId);
        // 把图书加入列表
        books.add(book);
        return book;  // 返回添加的图书(含ID)
    }
}

步骤4:启动项目(像按下"电源键")

运行BookmanagerApplication.java里的main方法,看到类似日志说明启动成功:

复制代码
Tomcat started on port 8080 (http)
Started BookmanagerApplication in 2.3 seconds

步骤5:测试功能

①初始化

在浏览器中直接访问http://127.0.0.1:8080/init

② 查询所有图书

浏览器访问http://localhost:8080/books,会看到初始化时添加到list中的图书信息:

json 复制代码
[{"id":1,"name":"三体","author":"刘慈欣"},{"id":2,"name":"三国","author":"罗贯中"}]
② 添加图书(用ApiPost、Postman或curl)

这里用国产的ApiPost举例:

(下载免费版即可)

  • 新建接口

  • 方法选POST,地址http://127.0.0.1:8080/books

  • bodyrawJSON,输入:

    json 复制代码
    {
        "name": "Spring Boot实战",
        "author": "张三"
    }
  • 点"发送|Send",会返回添加的图书(ID自动增长)。

    再次执行步骤②,可以看到三本图书信息

五、Spring Boot能做什么?

  • 网站后端:像电商网站的商品查询、下单接口;
  • 小程序后端:微信小程序的用户登录、数据提交功能;
  • 企业应用:OA系统、CRM系统的业务逻辑处理;
  • 微服务:和Spring Cloud配合,做大型分布式系统(比如外卖平台的订单、支付、配送服务)。

六、总结

Spring Boot的核心就是"简化":把复杂的配置交给框架,让开发者专注于业务逻辑。就像从"手动织布"到"机器织布",效率提升不止一点点。

如果你是新手,从这个"图书小管家"例子入手,慢慢尝试加功能(比如删除图书、按作者查询),很快就能掌握Spring Boot的精髓~

最后

编程的本质是解决问题,框架是帮我们更高效解决问题的工具。Spring Boot就是这样一个"趁手的工具",赶紧用起来吧!

相关推荐
oak隔壁找我4 小时前
SpringBoot 开发必备基础工具类实现(纯JWT认证,无SpringSecurity)
java·后端
间彧4 小时前
举例说明混合使用CAS和传统锁机制的成功案例
后端
间彧4 小时前
在高并发场景下,如何评估是使用CAS还是传统锁机制更合适?
后端
间彧4 小时前
在高并发场景下,如何量化评估何时应该从CAS切换到传统锁机制?
后端
oak隔壁找我4 小时前
SpringBoot 整合 Minio 和 FastDFS 实现分布式文件存储
java·后端
间彧5 小时前
CAS技术原理与应用详解
后端
华仔啊5 小时前
35岁程序员失业了,除了送外卖,还能做什么?
前端·后端·程序员
big狼王5 小时前
SonarQube本地化搭建及代码检测并导出报告PDF
java·pdf·sonarqube·sonarscanner
杨筱毅5 小时前
【Android】Handler/Looper机制相关的类图和流程图
android·java·流程图