Overview
本文是 Spring官方提供的教程 的中文译文。中文互联网上能查的教程质量都不怎么样(起码对于完全0基础的萌新来说),有的没头没尾的,有的细节上(比如JDK版本和Maven的pom.xml文件中的父项目版本号不兼容等)没说清楚,给萌新留下了巨大的坑。在踩了一个下午 + 半个晚上的坑之后,笔者终于下定决心去Spring官网啃官方的英文教程。虽然很不想看英文,但是看了之后发现其实也没那么难,于是决定顺手翻译成中文,顺便穿插一点自己的理解。希望能帮到后来的萌新。碎碎念结束,下面正式开始。
你将做什么
通过本教程,你将会创建一个经典的“Hello, World!”接口,所有浏览器都可以通过URL访问这个接口并得到响应。你可以在URL中设定你的名字,接口就会用更加友好的方式来会响应你。
你需要准备什么
- 一个你喜欢的IDE
比较热门的选择有Intellij IDEA、Spring Tools、Visual Studio Code、Eclipse和很多其他的。
- 一个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 | package com.example.demo; |
这就是通过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服务器运行,并且正在监听 localhost
的 8080
端口。打开你的浏览器,并在顶部的地址栏输入 http://localhost:8080/hello
。你应该得到这样一个很友好的响应:

小测验
如果你在上面的URL的末尾加上 ?name=Amy
应该发生什么事呢?
当然是显示 Hello, Amy! 了。
有的没的
新的征程
好久没更新博客了。跌跌撞撞结束了春招,拿到了算是相当不错的offer,然后摆了两个月。虽然和当初决心转码时追求WLB的初心有所偏离,但在这个就业形势下已经很不容易了。接下来要狠狠加班了。大概率要转Java岗,所以也在临阵磨枪学起了Spring Boot,不得不说还是Go的Gin简单。主打一个多才多艺。
没事听点歌(温和治疗 - 明明想了又想又假装没有想)
确实还是现场效果更炸一点。