使用Spring Boot REST API从Dapr API访问的步骤(基础版)
使用Spring Boot REST API从Dapr API访问的步骤(基本篇)
这个词的目的是什么?
深入理解分散应用程序运行时Dapr。
达成
我們將在Ubuntu的Docker環境下實施一個簡單的範例,該範例可以讓Spring Boot WEB應用程序通過Dapr API進行訪問。
开发环境
-
- 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版本”11.0.17″ 2022-10-18
OpenJDK运行时环境(构建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
Docker Desktop
版本4.16.3(96739)
$ docker –version
Docker版本20.10.22,构建3a2c30b
$ docker-compose –version
Docker Compose版本v2.15.1
Dapr ※ 安装Dapr CLI的步骤
$ dapr –version
CLI版本:1.10.0
运行时版本:1.10.0
※ 本文中主要运用 Ubuntu 终端进行操作。
展示”Hello World”的步骤
创建Spring Boot WEB应用程序
创建项目文件夹
$ cd ~
$ mkdir -p tmp/hello-spring-dapr
$ cd tmp/hello-spring-dapr
假设~/tmp/hello-spring-dapr是项目文件夹。
创建应用程序类
为了简化结构,将所有要素都描述了出来。
$ mkdir -p src/main/java/com/example/springdapr
$ vim src/main/java/com/example/springdapr/SpringbootApplication.java
文件的内容
package com.example.springdapr;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
创建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-dapr</artifactId>
<version>1.0</version>
<name>hello-spring-dapr</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>
首先尝试仅使用 Spring Boot 运行
Java应用程序构建
mvn clean install
Java应用程序启动
$ mvn spring-boot:run
用命令确认
$ curl -X GET http://localhost:8080/hello
Hello World!
我可以从Spring Boot应用程序中获取到”Hello World!”。
※ 暂时停止Spring Boot应用程序。
启动 Dapr 运行时
请确认版本
※ 建议使用 Docker 环境搭建 Dapr 运行时。
※ 请在 Docker 环境中确认 Dapr 容器组是否运行。
$ dapr --version
CLI version: 1.10.0
Runtime version: 1.10.0
在此处运行时启动应用程序的项目文件夹根目录。
$ dapr run \
--app-id hello-spring-dapr \
--app-port 8080 \
--dapr-http-port 3500 \
-- java -jar target/app.jar
※ この例ではSpring Boot 側に特に設定ファイルは必要ありませんでした。2–app-port8080Spring Boot アプリがリッスンするポート番号3–dapr-http-port3500Dapr ランタイムがリッスンするポート番号4– java -jartarget/app.jarSpring Boot アプリの jar ファイルを同時に実行します。
尝试通过 Dapr API 访问 Spring Boot 应用
请求(另一个终端)
※ 调用Spring Boot应用的“hello” API。
$ curl -X GET http://localhost:3500/v1.0/invoke/hello-spring-dapr/method/hello
Hello World!
我成功地从 Dapr API 获取到了 “Hello World!”。
总结
-
- Spring Boot アプリの REST API を Dapr API 経由で呼び出すことが出来ました。
-
- この記事の例ではまだ Spring Boot 側のアプリに Dapr への依存関係はありません。
-
- また実際には Spring Boot アプリをコンテナ化して Dapr コンテナと連携させる必要があります。
Spring Boot REST API に Dapr API からアクセスする手順 (Docker コンテナ編) に続きます。
今後さらに Spring Boot から Dapr クライアントオブジェクトを操作する方法を学ぶ必要があります。
公式参考资料
- Dapr SDK Java