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());
        }
    }
    

Spring Cloud Azure 除了提供自動配置的 SecretClient 外,還將提供一些其他功能。例如,您可以使用 @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 服務的自動配置支援,例如服務匯流排、儲存、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 儲存

為 Azure 儲存服務提供 Spring Boot 支援。有關更多資訊,請參閱 Spring Cloud Azure 開發人員指南資源處理部分。

資源

獲得支援

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

Spring Initializr

快速啟動您的專案

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有