開始使用

Spring Vault 支援需要 Vault 0.6 或更高版本以及 Java SE 6 或更高版本。 啟動一個工作環境的簡單方法是在 STS 中建立一個基於 Spring 的專案。

首先,您需要設定一個正在執行的 Vault 伺服器。 有關如何啟動 Vault 例項的說明,請參閱 Vault

要在 STS 中建立一個 Spring 專案,請轉到 File → New → Spring Template Project → Simple Spring Utility Project → 出現提示時按 Yes。 然後輸入專案名稱和一個包名稱,例如 org.spring.vault.example

然後將以下內容新增到 pom.xml 依賴項部分。

示例 1. 新增 Spring Vault 依賴項
<dependencies>

  <!-- other dependency elements omitted -->

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

</dependencies>

如果您使用的是里程碑版本或候選釋出版本,您還需要將 Spring Milestone 儲存庫的位置新增到您的 maven pom.xml 中,該位置與您的 <dependencies/> 元素位於同一級別。

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

該儲存庫也可以 在此處瀏覽

如果您使用的是 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(new VaultEndpoint(),
                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.VaultEndpoint 物件和 ClientAuthentication 來例項化 Spring Vault 的中心類 VaultTemplate。 您無需啟動 Spring Context 即可使用 Spring Vault。

  • 預計 Vault 配置了 00000000-0000-0000-0000-000000000000 的根令牌才能執行此應用程式。

  • 對映器適用於標準 POJO 物件,無需任何額外的元資料(儘管您可以選擇提供該資訊)。

  • 對映約定可以使用欄位訪問。 請注意,Secrets 類只有 getter。

  • 如果建構函式引數名稱與儲存的文件的欄位名稱匹配,它們將用於例項化物件。