本入门指南将会引导你如何从零开始建立一个 Spring 应用,并提供经典的"Hello World!"端点,可供任何浏览器都访问。
环境预备 {#环境预备}
你需要在本地安装好 Java™ 开发工具包(JDK),以及一个 IDE,如 IntelliJ IDEA、Spring Tools、Visual Studio Code 或 Eclipse。
第 1 步:创建新的 Spring Boot 项目 {#第-1-步创建新的-spring-boot-项目}
通过 start.springboot.io 来创建一个"web"项目。在"Dependencies"对话框中搜索并添加 "web"依赖项,如截图所示。点击"Generate"按钮,下载压缩包,并将其解压到电脑上的一个文件夹。
start.springboot.io 创建的项目包含 Spring Boot,这个框架使你不需要太多的代码或配置就可以让 Spring 在你的应用中工作。Spring Boot 是启动 Spring 项目的最快速和最流行的方式。
第 2 步:添加代码 {#第-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 步:尝试 {#第-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
。你应该得到一个如下的响应:
🎉️ 恭喜你,一切OK,应用已经成功运行。现在你可以尝试在请求URL中添加一个查询参数 name
(例如:http://localhost:8080/hello?name=Spring
),看看是否会输出你期待的内容。