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 社区所有即将举行的活动。

查看所有