快速入门
Spring Vault 支持需要 Vault 0.6 或更高版本以及 Java SE 17 或更高版本。引导搭建工作环境的一种简单方法是在 STS 中创建一个基于 Spring 的项目。
首先你需要设置一个正在运行的 Vault 服务器。请参阅 Vault 了解如何启动 Vault 实例。
要在 STS 中创建 Spring 项目,请依次进入 File → New → Spring Template Project → Simple Spring Utility Project,并在提示时按 Yes。然后输入一个项目和包名,例如 org.spring.vault.example。
然后将以下内容添加到 pom.xml 的 dependencies 部分。
示例 1:添加 Spring Vault 依赖
<dependencies>
<!-- other dependency elements omitted -->
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
如果你使用的是 SNAPSHOT,你还需要将 Spring Snapshot 仓库的位置添加到你的 maven pom.xml 中,该位置与你的 <dependencies/> 元素同级。
<repositories>
<repository>
<id>spring-snapshot</id>
<name>Spring Maven SNAPSHOT Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
该仓库也可以在此处浏览。
创建一个简单的 Secrets 类来持久化:
示例 2:映射数据对象
package org.spring.vault.example;
public class Secrets {
String username;
String password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
以及一个用于运行的主应用程序
示例 3:使用 Spring Vault 的示例应用程序
package org.springframework.vault.example;
import org.springframework.vault.authentication.TokenAuthentication;
import org.springframework.vault.client.VaultEndpoint;
import org.springframework.vault.core.VaultTemplate;
import org.springframework.vault.support.VaultResponseSupport;
public class VaultApp {
public static void main(String[] args) {
VaultTemplate vaultTemplate = new VaultTemplate(VaultClient.create("https://localhost:8200/v1"),
new TokenAuthentication("00000000-0000-0000-0000-000000000000"));
Secrets secrets = new Secrets();
secrets.username = "hello";
secrets.password = "world";
vaultTemplate.write("secret/myapp", secrets);
VaultResponseSupport<Secrets> response = vaultTemplate.read("secret/myapp", Secrets.class);
System.out.println(response.getData().getUsername());
vaultTemplate.delete("secret/myapp");
}
}
即使在这个简单的示例中,也有几点需要注意
- 你可以使用
org.springframework.vault.client.VaultClient对象和ClientAuthentication实例化 Spring Vault 的核心类 VaultTemplate。你不必启动 Spring Context 即可使用 Spring Vault。 - Vault 需要配置一个
00000000-0000-0000-0000-000000000000的根令牌才能运行此应用程序。 - mapper 可以直接处理标准 POJO 对象,而无需任何额外的元数据(尽管你可以选择提供这些信息)。
- 映射约定可以使用字段访问。请注意
Secrets类只有 getter 方法。 - 如果构造函数参数名与存储文档的字段名匹配,则它们将用于实例化对象。