环己三烯的冬眠舱

天天网抑云,偶尔读点书。

0%

Spring Boot快速上手指南

Overview

本文是 Spring官方提供的教程 的中文译文。中文互联网上能查的教程质量都不怎么样(起码对于完全0基础的萌新来说),有的没头没尾的,有的细节上(比如JDK版本和Maven的pom.xml文件中的父项目版本号不兼容等)没说清楚,给萌新留下了巨大的坑。在踩了一个下午 + 半个晚上的坑之后,笔者终于下定决心去Spring官网啃官方的英文教程。虽然很不想看英文,但是看了之后发现其实也没那么难,于是决定顺手翻译成中文,顺便穿插一点自己的理解。希望能帮到后来的萌新。碎碎念结束,下面正式开始。

你将做什么

通过本教程,你将会创建一个经典的“Hello, World!”接口,所有浏览器都可以通过URL访问这个接口并得到响应。你可以在URL中设定你的名字,接口就会用更加友好的方式来会响应你。

你需要准备什么

  1. 一个你喜欢的IDE

比较热门的选择有Intellij IDEA、Spring Tools、Visual Studio Code、Eclipse和很多其他的。

  1. 一个JDK

我们推荐BellSoft Liberica JDK version 17。

译者注:IDE方面,相对而言使用IDEA的人更多。我使用的是VSCode。IDEA确实更加智能,甚至过于智能了。我更喜欢在IDE中编辑完毕后敲命令行的感觉,这让我能更好地把握我每一步都做了什么事,不至于被IDE一股脑地包办,稀里糊涂地完成了项目,总觉得这样学习效果不好。JDK方面,我的环境是Oracle的JDK20。

第一步:新建一个Spring Boot项目

start.spring.io这个网站来创建一个Web项目。在”Dependencies”里面找到并添加Spring Web这个依赖。选完之后点击”Generate”按钮,浏览器会自动开始下载一个zip文件,将其解压到你的工作目录中。

通过这个网站生成的项目会包含Spring Boot,一个不需要很多代码和配置就可以让你的应用运行Spring的框架。Spring Boot是创建Spring项目最快且最热门的途径。

第二步:添加代码

在你的IDE中打开项目,并且定位到 src/main/java/com/example/demo 文件夹下的 DemoApplication.java 这个文件,并为文件添加以下额外的方法和注解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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”这个简单的网络服务所需要的全部代码了。

我们刚刚添加的 hello() 方法可以接受一个String型的变量 name ,将其和单词 "Hello" 拼在一起后返回。所以如果你在请求中设置 name"Amy" ,程序的响应就会是 "Hello Amy!"

注解 @RestController 告诉Spring这段代码描述了一个需要能通过网络访问的端口。

注解 @GetMapping("/hello") 告诉Spring要使用上面定义的 hello() 方法来响应被发送到地址 http://localhost:8080/hello 的请求。

最后, 注解 @RequestParam 告诉Spring请求里需要有一个值,也就是上面提到的 name ,但是如果请求里没有这么一个值,那就默认采用单词 "World" 来代替。

第三步:试试看

让我们来构建并运行这个程序。打开一个命令行(或终端)并且设置工作目录为你的项目存放的目录。我们可以通过以下命令来构建并运行这个应用:

MacOS/Linux:

1
./gradlew bootRun

Windows:

1
.\gradlew.bat bootRun

译者注:上面应该是默认采用了gradle wrapper作为构建工具了。我使用的是maven wrapper,对应的命令为 .\mvnw spring-boot:run。maven在构建过程中可能需要从远程仓库下载依赖项,国内访问可能会卡,一时不行的话可以等一会儿再试试。

你应该看到类似的输出:

上面的最后两行字告诉我们Spring已经在运行了。Spring Boot内置的Apache Tomcat正在作为这个项目的Web服务器运行,并且正在监听 localhost8080 端口。打开你的浏览器,并在顶部的地址栏输入 http://localhost:8080/hello 。你应该得到这样一个很友好的响应:

小测验

如果你在上面的URL的末尾加上 ?name=Amy 应该发生什么事呢?

当然是显示 Hello, Amy! 了。


有的没的

新的征程

好久没更新博客了。跌跌撞撞结束了春招,拿到了算是相当不错的offer,然后摆了两个月。虽然和当初决心转码时追求WLB的初心有所偏离,但在这个就业形势下已经很不容易了。接下来要狠狠加班了。大概率要转Java岗,所以也在临阵磨枪学起了Spring Boot,不得不说还是Go的Gin简单。主打一个多才多艺。

没事听点歌(温和治疗 - 明明想了又想又假装没有想)

确实还是现场效果更炸一点。