Spring Cloud Azure5.13.0

什么是 Spring Cloud Azure?

Spring Cloud Azure 是一个开源项目,它使用 Spring 应用程序开发中常用的表达式和配置,提供 Spring 应用程序与 Azure 服务之间的集成。尽管名称相似,但 Spring Cloud Azure 与 Azure Spring Apps 不同,后者是一个用于在 Azure 上运行 Spring 应用的 Web 托管平台。

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>4.19.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 服务(如服务总线、存储、Active Directory 等)提供自动配置支持。

Azure Active Directory

提供Spring Security与Azure Active Directory集成支持,用于身份验证。更多信息,请参阅Spring安全支持部分的Spring Cloud Azure开发者指南

Azure Key Vault

提供与Azure Key Vault Secrets集成的Spring @Value 注解支持。更多信息,请参阅密钥管理部分的Spring Cloud Azure开发者指南

Azure Storage

提供对Azure存储服务的Spring Boot支持。更多信息,请参阅资源处理部分的Spring Cloud Azure开发者指南

资源

获取支持

如果您需要Spring Cloud Azure的支持,您可以通过以下方式寻求帮助:

Spring Initializr

快速入门您的项目

领先一步

VMware提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部