入門
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
の依存関係セクションに追加します。
<dependencies>
<!-- other dependency elements omitted -->
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>
<version>3.1.2</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
クラスを作成します。
package org.spring.vault.example;
public class Secrets {
String username;
String password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
そして実行するメインアプリケーション
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 しかないことに注意してください。コンストラクターの引数名が格納されたドキュメントのフィールド名と一致する場合、オブジェクトのインスタンス化に使用されます。