快速开始

本章用官方生成器 start.spring.io 创建第一个 Spring Boot 项目,并写一个最简单的 REST 接口跑起来。整个过程不需要手工拼接依赖,也是后续所有章节的项目骨架来源。

用 start.spring.io 生成项目

打开浏览器访问 start.spring.io(IDEA 的 New Project → Spring Initializr 与它等价,界面稍有差异):

  • 构建方式:Maven(本教程以 Maven 示例);
  • 语言:Java;
  • Spring Boot 版本:选 4.x 的稳定版(写作时点为 4.1.x);
  • 依赖:先只勾选 Spring Web(对应 spring-boot-starter-web)。

点击生成并下载 zip,解压后用 IDEA 打开(选择其中的 pom.xml),等待依赖下载完成即可。

工程结构

demo/
├─ pom.xml
└─ src
   ├─ main/java/com/example/demo/
   │  └─ DemoApplication.java      # 启动类
   ├─ main/resources/
   │  ├─ application.properties    # 配置文件(可空)
   │  └─ static/ templates/        # 静态资源与模板目录,见 10/11 章
   └─ test/java/com/example/demo/  # 测试目录,见 23 章

pom.xml 的三个关键点:父工程 spring-boot-starter-parent 锁定版本;依赖 spring-boot-starter-web;插件 spring-boot-maven-plugin 负责打包可执行 jar。

启动类

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);
    }
}

@SpringBootApplication 是启动入口,它的内部组成在 03 章展开。

第一个接口

新建 HelloController

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

@RestController 等价于 @Controller@ResponseBody:类中方法直接以 JSON/文本形式返回,不再走视图渲染。

运行与验证

三种常见运行方式:

  • IDEA 中直接运行 DemoApplicationmain 方法;
  • 命令行执行 mvn spring-boot:run
  • mvn package,再执行 java -jar target/demo-0.0.1-SNAPSHOT.jar

启动成功后控制台会打印 Tomcat 启动在 8080 端口的日志。浏览器访问 http://localhost:8080/hello,即可看到返回的文本。默认端口是 8080,修改方式见 04 章。

小练习

给控制器加一个带路径参数的接口:

@GetMapping("/hello/{name}")
public String helloName(@PathVariable String name) {
    return "Hello, " + name + "!";
}

重启后访问 http://localhost:8080/hello/world,体会「加依赖、写方法、就能用」的节奏。

小结

start.spring.io 生成的骨架自带启动类与构建配置,我们只加了一个控制器就完成了第一个接口。接下来学习骨架背后最重要的机制:自动配置(03 章)。

笔记加载中…