Spring 快速入门指南

本入门指南将会引导你如何从零开始建立一个 Spring 应用,并提供经典的“Hello World!”端点,可供任何浏览器都访问。

环境预备

你需要在本地安装好 Java™ 开发工具包(JDK),以及一个 IDE,如 IntelliJ IDEA、Spring Tools、Visual Studio Code 或 Eclipse。

第 1 步:创建新的 Spring Boot 项目

通过 start.springboot.io 来创建一个“web”项目。在“Dependencies”对话框中搜索并添加 “web”依赖项,如截图所示。点击“Generate”按钮,下载压缩包,并将其解压到电脑上的一个文件夹。

start.springboot.io

start.springboot.io 创建的项目包含 Spring Boot,这个框架使你不需要太多的代码或配置就可以让 Spring 在你的应用中工作。Spring Boot 是启动 Spring 项目的最快速和最流行的方式。

第 2 步:添加代码

在你的 IDE 中打开项目,找到 src/main/java/com/example/demo 文件夹中的 DemoApplication.java 文件。现在改变该文件的内容,添加下面代码中所示的额外方法和注解。你可以复制并粘贴该代码,或者手动输入该代码。

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
    public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
      return String.format("Hello %s!", name);
    }
}

这就是在 Spring Boot 中创建一个简单的 “Hello World”web 服务所需的全部代码。

hello() 方法被设计为接受一个名为 name 的字符串参数,然后在代码中把这个参数和 "Hello" 这个词拼接起来。这意味着,如果你在请求中把 name 设为 Amy,响应将是 Hello Amy

@RestController 注解告诉 Spring,这段代码描述了一个应该通过 web 提供服务的端点。@GetMapping("/hello") 告诉 Spring 使用我们的 hello() 方法来响应发送到 http://localhost:8080/hello 地址上的请求。最后,@RequestParam 告诉 Spring 在请求中期待一个 name 参数值,但如果没有,它将默认使用 World 这个值。

第 3 步:尝试

现在让我们来构建并运行该程序。打开一个命令行(或终端),导航到你有项目所在的文件夹。我们可以通过执行以下命令来构建和运行该程序:

MacOS/Linux:

./gradlew bootRun

Windows:

.\gradlew.bat bootRun

第一次执行会花费一些时间下载所需的依赖(特别是中国大陆的用户来说),所以请耐心等待。

一切就绪后,你将会看到如下输出:

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.1)

2023-07-10T15:12:15.599+08:00  INFO 14360 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 17 with PID 14360 (C:\Users\KevinBlandy\Downloads\demo\demo\build\classes\java\main started by KevinBlandy in C:\Users\KevinBlandy\Downloads\demo\demo)
2023-07-10T15:12:15.603+08:00  INFO 14360 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2023-07-10T15:12:16.472+08:00  INFO 14360 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-07-10T15:12:16.486+08:00  INFO 14360 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-07-10T15:12:16.486+08:00  INFO 14360 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.10]
2023-07-10T15:12:16.600+08:00  INFO 14360 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-07-10T15:12:16.602+08:00  INFO 14360 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 928 ms
2023-07-10T15:12:16.894+08:00  INFO 14360 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-07-10T15:12:16.901+08:00  INFO 14360 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.727 seconds (process running for 2.049)

最后几行告诉我们,Spring 已经启动。Spring Boot 使用嵌入式的 Apache Tomcat Server 作为 web 服务器,正在监听 localhost 8080 端口的请求。打开你的浏览器,访问 http://localhost:8080/hello 。你应该得到一个如下的响应:

Spring Boot 的 Hello World 响应

🎉️ 恭喜你,一切OK,应用已经成功运行。现在你可以尝试在请求URL中添加一个查询参数 name(例如:http://localhost:8080/hello?name=Spring),看看是否会输出你期待的内容。