Spring Cloud AzureSpring Cloud Azure

什麼是 Spring Cloud Azure?

Spring Cloud Azure 是一個開源專案,它使用 Spring 應用開發原生的常規表達方式和配置,提供 Spring 應用與 Azure 服務之間的整合。

Spring Cloud Azure 有哪些用途?

Spring Cloud Azure 可以幫助更輕鬆地在 Spring 應用中完成以下任務

以下圖表提供了這些功能的概覽:Spring Cloud azure

使用 Spring Cloud Azure 的優勢

以下部分展示了使用 Spring Cloud Azure 的優勢。本節以檢索儲存在 Azure Key Vault 中的金鑰為例。本節比較了使用和不使用 Spring Cloud Azure 開發 Spring Boot 應用之間的差異。

不使用 Spring Cloud Azure

不使用 Spring Cloud Azure,如果您想檢索儲存在 Azure Key Vault 中的金鑰,需要執行以下步驟

  1. 將以下依賴新增到您的 pom.xml 檔案中

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. 使用類似於以下示例的程式碼構造一個 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();
        }
    }
    
  3. 透過使這些屬性可配置來避免硬編碼諸如 client-idclient-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;
        }
    }
    
  4. 按照此示例所示更新您的應用程式碼

    @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());
        }
    }
    
  5. 將必要的屬性新增到您的 application.yml 檔案中,如下例所示

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. 如果您需要在多個地方使用 SecretClient,請定義一個 SecretClient bean。然後,在相關位置自動裝配 SecretClient

使用 Spring Cloud Azure

使用 Spring Cloud Azure,如果您想檢索儲存在 Azure Key Vault 中的金鑰,要求會更簡單,如下所示

  1. 將以下依賴新增到您的 pom.xml 檔案中

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. 使用 BOM(材料清單)來管理 Spring Cloud Azure 版本,如下例所示

    <dependencyManagement>
     <dependencies>
       <dependency>
         <groupId>com.azure.spring</groupId>
         <artifactId>spring-cloud-azure-dependencies</artifactId>
         <version>5.18.0</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
     </dependencies>
    </dependencyManagement>
    
  3. 將以下屬性新增到您的 application.yml 檔案中

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. 使用以下命令透過 Azure CLI 登入。您的憑據將由 Azure CLI 提供,因此無需新增其他憑據資訊,例如 client-idclient-secret

    az login
    
  5. 在相關位置自動裝配 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);
    }

}

Spring Cloud Azure 的元件

Azure 支援

提供對 Azure 服務的自動配置支援,例如 Service Bus、Storage、Active Directory 等。

Azure Active Directory

為 Spring Security 與 Azure Active Directory 的身份驗證提供整合支援。有關更多資訊,請參閱 Spring Cloud Azure 開發者指南Spring 安全支援 部分。

Azure Key Vault

提供 Spring @Value 註解支援,用於與 Azure Key Vault Secrets 整合。有關更多資訊,請參閱 Spring Cloud Azure 開發者指南金鑰管理 部分。

Azure Storage

提供 Spring Boot 對 Azure Storage 服務的支援。有關更多資訊,請參閱 Spring Cloud Azure 開發者指南資源處理 部分。

資源

獲取支援

如果您需要 Spring Cloud Azure 的支援,可以透過以下方式尋求幫助

Spring Initializr

快速啟動您的專案

搶佔先機

VMware 提供培訓和認證,助您加速發展。

瞭解更多

獲取支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部