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 社区的所有近期活动。

查看全部