入門
Spring Vault 支援需要 Vault 0.6 或更高版本以及 Java SE 6 或更高版本。設定工作環境的一種簡單方法是在 STS 中建立一個基於 Spring 的專案。
首先,您需要設定一個正在執行的 Vault 伺服器。有關如何啟動 Vault 例項的說明,請參閱 Vault。
要在 STS 中建立一個 Spring 專案,請轉到檔案 → 新建 → Spring 模板專案 → 簡單 Spring 實用工具專案 → 在提示時按“是”。然後輸入一個專案和包名稱,例如 org.spring.vault.example。
然後將以下內容新增到 pom.xml 的依賴項部分。
<dependencies>
<!-- other dependency elements omitted -->
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
如果您正在使用 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 類來持久化
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 Context 來使用 Spring Vault。 -
要執行此應用程式,Vault 預計配置了根令牌
00000000-0000-0000-0000-000000000000。 -
對映器對標準 POJO 物件起作用,無需任何額外的元資料(儘管您可以選擇提供該資訊)。
-
對映約定可以使用欄位訪問。請注意,
Secrets類只有 getter 方法。 -
如果建構函式引數名稱與儲存文件的欄位名稱匹配,它們將用於例項化物件。