Spring Boot的Web服务的Hello World!
Spring Boot WEB服务的 Hello World!
意图
使用Spring Boot创建最简化的WEB服务以加深理解。
实现
在本地环境(Ubuntu)上构建和启动一个Spring Boot jar文件形式的应用程序。
技術背景:
技術背景是指一個人或組織在技術方面的知識、經驗和能力。
Spring Boot 是什么?
Spring Boot是用于开发Java Web应用程序的一个框架,它是基于Spring Framework的一组库。
其特点包括:
配置简单,只需编写代码即可创建Web应用程序。
具备自动化的功能,例如应用程序的自动配置和自动检测等。
自动解决Spring Framework的依赖关系,开发者无需花费时间管理库的问题。
支持多种数据源和安全功能等多个库,具有高度的灵活性,适用于多种用途。
还提供了一个名为Spring Cloud的扩展,用于将应用程序作为微服务运行。
其优点包括:
开发者可以专注于应用程序的业务逻辑,无需花费时间在繁琐的配置和设置上。
通过Spring Boot的自动化功能,开发者可以更快地开发代码,更快地进行构建、测试和部署。
由于具有高度的灵活性和丰富的库,可以适应各种用途。
使用Spring Cloud可以提供扩展功能,以将应用程序作为微服务运行,并提高可伸缩性和鲁棒性。
开发环境
-
- Windows 11 Home 22H2 を使用しています。
WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。
> wsl –version
WSL版本:1.0.3.0
内核版本:5.15.79.1
WSLg版本:1.0.47Ubuntu
$ lsb_release -a
没有可用的LSB模块。
发行商ID:Ubuntu
描述:Ubuntu 22.04.1 LTS
发布:22.04
Java JDK ※ Java JDK的安装和Hello World!
$ java -version
openjdk version “11.0.17” 2022-10-18
OpenJDK Runtime Environment(构建11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64位服务器虚拟机(构建11.0.17+8-post-Ubuntu-1ubuntu222.04,混合模式,共享)
Maven ※ Maven的安装和Hello World!
$ mvn -version
Apache Maven 3.6.3
Maven主目录:/usr/share/maven
Java版本:11.0.17,供应商:Ubuntu,运行时:/usr/lib/jvm/java-11-openjdk-amd64
※ 本文中将主要使用Ubuntu终端进行操作。
显示“Hello World”的步骤
创建项目文件夹
假设 ‘~/tmp/hello-spring-boot’ 是项目文件夹。
$ cd ~
$ mkdir -p tmp/hello-spring-boot
$ cd ~/tmp/hello-spring-boot
创建应用程序类
$ mkdir -p src/main/java/com/example/springboot
$ vim src/main/java/com/example/springboot/Application.java
文件的内容 de
package com.example.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
该代码是使用Spring Boot创建Web应用程序的基本类。
具体来说,定义了一个带有@SpringBootApplication注释的Application类。@SpringBootApplication注释是启用Spring Boot自动配置所必需的。这样,Spring Boot会自动检测类路径上需要的设置并自动配置应用程序。
然后,main方法是启动应用程序所必需的,它调用SpringApplication.run()方法,并将Application类作为参数传递。这个方法启动Spring Boot应用程序并加载所需的设置,然后运行应用程序。
换句话说,这段代码是启动Spring Boot应用程序所需的最少代码,详细的配置和路由等设置需要另外添加。
创建控制器类
$ mkdir -p src/main/java/com/example/springboot/controller
$ vim src/main/java/com/example/springboot/controller/HelloController.java
文件的内容
package com.example.springboot.controller;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/data")
public Map<String, String> getData() {
Map<String, String> map = Map.of("message", "Hello World!");
return map;
}
}
该代码是用来定义Spring Boot应用程序中REST API端点的类。
具体来说,定义了一个带有@RestController注解的HelloController类。@RestController注解表示该类定义了一个RESTful端点。
@RequestMapping注解定义了URL路径以便根据HTTP请求到达该端点。在这种情况下,请求路径被映射为/api。
而且,被注解@GetMapping的getData方法被定义为接收HTTP GET请求并返回一个Map对象。在这种情况下,Map只包含一个键和值,键为”message”,值为”Hello World!”。
因此,当执行此代码时,会发送GET请求到/api/data,并返回一个名为”Hello World!”的JSON响应。
创建pom.xml 文件
$ vim pom.xml
文件的内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>hello-spring-boot</artifactId>
<version>1.0</version>
<name>hello-spring-boot</name>
<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
目录文件结构
$ tree
.
├── pom.xml
└── src
└── main
└── java
└── com
└── example
└── springboot
├── Application.java
└── controller
└── HelloController.java
运行Spring Boot应用程序
应用程序构建
※ 将创建target/app.jar。
$ mvn clean install
启动应用程序(按Ctrl + C停止)
$ mvn spring-boot:run
请使用网络浏览器进行确认。
http://localhost:8080/api/data
在WEB浏览器中,成功显示了{“message”:”你好,世界!”} 并且成功获取了JSON数据。
请用其他终端命令进行确认
$ curl -v http://localhost:8080/api/data
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api/data HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Sat, 25 Feb 2023 05:13:10 GMT
<
* Connection #0 to host localhost left intact
{"message":"Hello World!"}
在终端上显示了 {“message”:”你好世界!”} 并成功获取到了 JSON 数据。
总结
-
- Ubuntu のシンプルな構成の Java 開発環境で、Spring Boot WEBサービスを実行することが出来ました。
- また、Spring Boot を使用しない素の Spring MVC REST WEBサービスの Hello World!と比較すると、少ない記述で同じ動作を実装することが出来ました。