Dela via


Vad är Spring Cloud Azure?

Spring Cloud Azure är ett open source projekt som gör det enklare att använda Azure-tjänster i Spring program.

Spring Cloud Azure är ett open source projekt med alla resurser tillgängliga för allmänheten. Följande lista innehåller länkar till dessa resurser:

Vad används Spring Cloud Azure för?

Spring Cloud Azure kan göra det enklare att utföra följande uppgifter i Spring-program:

Fördelar med att använda Spring Cloud Azure

I följande avsnitt visas fördelarna med att använda Spring Cloud Azure. I det här avsnittet används hämtningen av hemligheter som lagras i Azure Key Vault som ett exempel. I det här avsnittet jämförs skillnaderna mellan att utveckla ett Spring Boot-program med och utan Spring Cloud-Azure.

Utan Spring Cloud-Azure

Utan Spring Cloud-Azure behöver du följande steg om du vill hämta hemligheter som lagras i Azure Key Vault:

  1. Lägg till följande beroenden i din pom.xml-fil:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Skapa en SecretClient klassinstans med hjälp av kod som liknar följande exempel:

    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. Undvik hård kodningsinformation som client-id och client-secret genom att göra dessa egenskaper konfigurerbara, som du ser i följande exempel:

    @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. Uppdatera programkoden enligt det här exemplet:

    @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. Lägg till de nödvändiga egenskaperna i din application.yml-fil , som du ser i följande exempel:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Om du behöver använda SecretClient på flera platser definierar du en SecretClient böna. Sedan anslut SecretClient automatiskt i relevanta platser.

Med Spring Cloud Azure

Med Spring Cloud Azure är kraven enklare om du vill hämta hemligheter som lagras i Azure Key Vault, enligt följande steg:

  1. Lägg till följande beroenden i din pom.xml-fil:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Använd en strukturlista (BOM) för att hantera Spring Cloud Azure-versionen, som visas i följande exempel.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.1.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

Not

Om du använder Spring Boot 4.0.x måste du ange spring-cloud-azure-dependencies versionen till 7.1.0.

Om du använder Spring Boot 3.5.x måste du ange spring-cloud-azure-dependencies versionen till 6.1.0.

Om du använder Spring Boot 3.1.x-3.5.x måste du ange spring-cloud-azure-dependencies versionen till 5.25.0.

Om du använder Spring Boot 2.x måste du ange spring-cloud-azure-dependencies versionen till 4.20.0.

Den här materialspecifikationen (BOM) bör konfigureras i avsnittet <dependencyManagement> i din pom.xml-fil. Detta säkerställer att alla Spring Cloud-Azure beroenden använder samma version.

Mer information om vilken version som används för denna BOM finns i dokumentationen Which Version of Spring Cloud Azure Should I Use.

  1. Lägg till följande egenskaper i din application.yml-fil :

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  2. Logga in med Azure CLI med hjälp av följande kommando. Dina autentiseringsuppgifter tillhandahålls sedan av Azure CLI, så du behöver inte lägga till annan information om autentiseringsuppgifter som client-id och client-secret.

    az login
    
  3. Auto-wire SecretClient på de relevanta ställena, enligt följande exempel:

    @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 tillhandahåller några andra funktioner förutom den automatiskt konfigurerade SecretClient. Du kan till exempel använda @Value för att hämta det hemliga värdet, som du ser i följande exempel:

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

}

Komponenter i Spring Cloud-Azure

Azure support

Ger stöd för automatisk konfiguration för Azure Services, till exempel Service Bus, Lagring, Active Directory och så vidare.

Microsoft Entra ID

Tillhandahåller integrationsstöd för Spring Security med Microsoft Entra ID för autentisering. Mer information finns i Spring Cloud Azure support for Spring Security.

Azure Key Vault

Tillhandahåller stöd för Spring @Value-anteckningar för integrering med Azure Key Vault Secrets. Mer information finns i Spring Cloud Azure secret management.

Azure Storage

Tillhandahåller Spring Boot-stöd för Azure Storage tjänster. Mer information finns i Spring Cloud Azure resurshantering.

Få support

Om du behöver support för Spring Cloud Azure kan du be om hjälp på följande sätt:

Nästa steg