入門

Spring Vault のサポートには、Vault 0.6 以上および Java SE 6 以上が必要です。作業環境をセットアップするブートストラップの簡単な方法は、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.1.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");
    }
}

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

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

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

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

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

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