搶先一步
VMware 提供訓練和認證,以加速您的進度。
了解更多Spring Cloud Azure 是一個開放原始碼專案,旨在將您的 Spring 應用程式與 Azure 服務整合,使用 Spring 應用程式開發的原生慣用表達式和組態。儘管名稱相似,Spring Cloud Azure 與 Azure Spring Apps 不同,後者是專為在 Azure 上執行 Spring 應用程式而設計的 Web 託管平台。
Spring Cloud Azure 可以更輕鬆地在 Spring 應用程式中完成以下任務
下圖概述了這些功能:
以下章節示範了使用 Spring Cloud Azure 的優點。本節以擷取儲存在 Azure Key Vault 中的秘密為例。本節比較了在有無 Spring Cloud Azure 的情況下開發 Spring Boot 應用程式之間的差異。
如果沒有 Spring Cloud Azure,而您想要擷取儲存在 Azure Key Vault 中的秘密,則需要執行以下步驟
將以下相依性新增至您的 pom.xml 檔案
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-secrets</artifactId>
<version>4.5.2</version>
</dependency>
使用類似於以下範例的程式碼建構 SecretClient
類別執行個體
public class DemoClass {
public static void main(String... args) {
SecretClient client = new SecretClientBuilder()
.vaultUrl("vaultUrl")
.credential(new ClientSecretCredentialBuilder()
.tenantId("tenantId")
.clientId("clientId")
.clientSecret("clientSecret")
.build())
.buildClient();
}
}
避免硬式編碼 client-id
和 client-secret
等資訊,方法是將這些屬性設為可組態,如下列範例所示
@ConfigurationProperties("azure.keyvault")
public class KeyVaultProperties {
private String vaultUrl;
private String tenantId;
private String clientId;
private String clientSecret;
public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) {
this.vaultUrl = vaultUrl;
this.tenantId = tenantId;
this.clientId = clientId;
this.clientSecret = clientSecret;
}
public String getVaultUrl() {
return vaultUrl;
}
public void setVaultUrl(String vaultUrl) {
this.vaultUrl = vaultUrl;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
}
更新您的應用程式程式碼,如此範例所示
@SpringBootApplication
@EnableConfigurationProperties(KeyVaultProperties.class)
public class SecretClientApplication implements CommandLineRunner {
private KeyVaultProperties properties;
public SecretClientApplication(KeyVaultProperties properties) {
this.properties = properties;
}
public static void main(String[] args) {
SpringApplication.run(SecretClientApplication.class, args);
}
@Override
public void run(String... args) {
SecretClient client = new SecretClientBuilder()
.vaultUrl(properties.getVaultUrl())
.credential(new ClientSecretCredentialBuilder()
.tenantId(properties.getTenantId())
.clientId(properties.getClientId())
.clientSecret(properties.getClientSecret())
.build())
.buildClient();
System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue());
}
}
將必要的屬性新增至您的 application.yml 檔案,如此範例所示
azure:
keyvault:
vault-url:
tenant-id:
client-id:
client-secret:
如果您需要在多個地方使用 SecretClient
,請定義 SecretClient
bean。然後,在相關位置自動裝配 SecretClient
。
如果使用 Spring Cloud Azure,而您想要擷取儲存在 Azure Key Vault 中的秘密,則需求更為簡潔,如下列步驟所示
將以下相依性新增至您的 pom.xml 檔案
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
</dependencies>
使用物料清單 (BOM) 來管理 Spring Cloud Azure 版本,如下列範例所示
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>4.19.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
將以下屬性新增至您的 application.yml 檔案
spring:
cloud:
azure:
keyvault:
secret:
endpoint:
使用下列命令透過 Azure CLI 登入。您的認證將由 Azure CLI 提供,因此無需新增其他認證資訊,例如 client-id
和 client-secret
。
az login
在相關位置自動裝配 SecretClient
,如此範例所示
@SpringBootApplication
public class SecretClientApplication implements CommandLineRunner {
private final SecretClient secretClient;
public SecretClientApplication(SecretClient secretClient) {
this.secretClient = secretClient;
}
public static void main(String[] args) {
SpringApplication.run(SecretClientApplication.class, args);
}
@Override
public void run(String... args) {
System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue());
}
}
除了自動組態的 SecretClient
之外,Spring Cloud Azure 還會提供其他一些功能。例如,您可以使用 @Value
來取得秘密值,如此範例所示
@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
public static void main(String[] args) {
SpringApplication.run(PropertySourceApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
}
}
提供 Azure 服務 (例如 Service Bus、Storage、Active Directory 等) 的自動組態支援。
提供 Spring Security 與 Azure Active Directory 整合以進行驗證的支援。如需詳細資訊,請參閱《Spring Cloud Azure 開發人員指南》的「Spring Security 支援」章節。
提供 Spring @Value
註釋支援,以與 Azure Key Vault Secrets 整合。如需詳細資訊,請參閱《Spring Cloud Azure 開發人員指南》的「秘密管理」章節。
提供 Spring Boot 對 Azure Storage 服務的支援。如需詳細資訊,請參閱《Spring Cloud Azure 開發人員指南》的「資源處理」章節。
如果您需要 Spring Cloud Azure 的支援,可以透過以下方式尋求協助