Spring Cloud Azure5.8

,后者是一个 Web 托管平台,旨在在 Azure 上运行 Spring Apps。

Spring Cloud Azure 用途是什么?

Spring Cloud Azure 可以帮助在 Spring 应用程序中更轻松地完成以下任务

下图概述了这些功能:Spring Cloud azure

使用 Spring Cloud Azure 的好处

以下部分演示使用 Spring Cloud Azure 的好处。在本部分中,将使用存储在 Azure Key Vault 中的机密进行检索作为示例。本部分比较了使用 Spring Cloud Azure 和不使用 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.14.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 服务(如服务总线、存储、活动目录等)提供自动配置支持。

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 存储

为 Azure 存储服务提供 Spring Boot 支持。有关详细信息,请参阅 资源处理 部分的 Spring Cloud Azure 开发人员指南

资源

获取支持

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

Spring Initializr

快速启动你的项目

抢先一步

VMware 提供培训和认证,以加速你的进度。

了解详情

获取支持

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

了解详情

即将举行的活动

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

查看全部