该版本仍在开发中,尚未被视为稳定版本。如需获取最新的稳定版本,请使用Spring Vault 4.0.1spring-doc.cadn.net.cn

快速开始

Spring Vault 支持需要 Vault 0.6 或更高版本以及 Java SE 17 或更高版本。 快速搭建工作环境的一个简单方法是在 STS 中创建一个基于 Spring 的项目。spring-doc.cadn.net.cn

首先,你需要设置一个正在运行的 Vault 服务器。 有关如何启动 Vault 实例的说明,请参阅Vaultspring-doc.cadn.net.cn

要使用STS创建一个Spring项目,请转到 文件 → 新建 → Spring模板项目 → 简单的Spring实用程序项目 → 当提示时按 是。 然后输入项目名称和包名称,例如 org.spring.vault.examplespring-doc.cadn.net.cn

然后在 pom.xml 依赖部分添加以下内容。spring-doc.cadn.net.cn

示例 1. 添加 Spring Vault 依赖
<dependencies>

  <!-- other dependency elements omitted -->

  <dependency>
    <groupId>org.springframework.vault</groupId>
    <artifactId>spring-vault-core</artifactId>
    <version>4.1.0-M1</version>
  </dependency>

</dependencies>

如果你使用的是 SNAPSHOT 版本,你还需要将 Spring Snapshot 仓库的位置添加到你的 maven pom.xml 中,它与你的 <dependencies/> 元素处于同一级别。spring-doc.cadn.net.cn

<repositories>
  <repository>
    <id>spring-snapshot</id>
    <name>Spring Maven SNAPSHOT Repository</name>
    <url>https://repo.spring.io/snapshot</url>
  </repository>
</repositories>

创建一个简单的 Secrets 类来进行持久化:spring-doc.cadn.net.cn

示例 2. 映射数据对象
package org.spring.vault.example;

public class Secrets {

    String username;
    String password;

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

以及一个运行的主应用程序spring-doc.cadn.net.cn

使用 Spring Vault 的示例应用程序示例 3
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");
    }
}

即使在这个简单的例子中,也有一些值得注意的地方spring-doc.cadn.net.cn

  • 你可以通过 VaultTemplate、使用 org.springframework.vault.client.VaultClient 对象和 ClientAuthentication 来实例化 Spring Vault 的核心类。使用 Spring Vault 并不需要启动 Spring 上下文。spring-doc.cadn.net.cn

  • Vault 预期配置为使用根Tokens 00000000-0000-0000-0000-000000000000 来运行此应用程序。spring-doc.cadn.net.cn

  • 映射器针对标准的POJO对象工作,无需任何额外的元数据(不过您可以选择性地提供这些信息)。spring-doc.cadn.net.cn

  • 映射约定可以使用字段访问。 注意 Secrets 类只有 getter 方法。spring-doc.cadn.net.cn

  • 如果构造函数参数名称与存储文档的字段名称匹配,它们将用于实例化对象。spring-doc.cadn.net.cn