最新の安定バージョンについては、Spring Vault 4.1.0 を使用してください!

入門

Spring Vault のサポートには、Vault 0.6 以上および Java SE 17 以上が必要です。作業環境を簡単にセットアップする方法は、Pleiades All in One (JDK, STS, Lombok 付属) 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.2.1</version>
  </dependency>

</dependencies>

マイルストーンまたはリリース候補を使用している場合は、Spring マイルストーンリポジトリの場所を、<dependencies/> 要素と同じレベルにある maven pom.xml に追加する必要もあります。

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

リポジトリも参照できます (英語)

SNAPSHOT を使用している場合は、Spring スナップショットリポジトリの場所を、<dependencies/> 要素と同じレベルにある maven pom.xml に追加する必要もあります。

<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");
    }
}

この単純な例でも、注意すべき点はほとんどありません

  • Spring Vault の中心クラスである VaultTemplate は、org.springframework.vault.client.VaultEndpoint オブジェクトと ClientAuthentication オブジェクトを使用してインスタンス化できます。Spring Vault を使用するために Spring コンテキストを起動する必要はありません。

  • このアプリケーションを実行するには、Vault が 00000000-0000-0000-0000-000000000000 のルートトークンで構成されている必要があります。

  • マッパーは、追加のメタデータを必要とせずに標準の POJO オブジェクトに対して機能します (ただし、必要に応じてその情報を提供できます)。

  • マッピング規則では、フィールドアクセスを使用できます。Secrets クラスには getter しかないことに注意してください。

  • コンストラクターの引数名が格納されたドキュメントのフィールド名と一致する場合、オブジェクトのインスタンス化に使用されます。