Vad är Spring Cloud Azure?
Spring Cloud Azure är ett projekt med öppen källkod som gör det enklare att använda Azure-tjänster i Spring-program.
Spring Cloud Azure är ett projekt med öppen källkod med alla resurser som är tillgängliga för allmänheten. Följande lista innehåller länkar till dessa resurser:
- Källkod: Azure/azure-sdk-for-java.
- Exempel: Azure-Samples/azure-spring-boot-samples.
- Dokumentation: Spring Cloud Azure.
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:
- Hantera konfigurationsegenskaper med Azure App Configuration.
- Skicka och ta emot meddelanden med Azure Event Hubs, Azure Service Busoch Azure Storage Queue.
- Hantera hemligheter och certifikat med Azure Key Vault.
- Stöd för användarinloggning med arbets- eller skolkonton som provisionerats med Microsoft Entra ID.
- Stöd för användarinloggning med sociala konton som Facebook och Google med Azure Active Directory B2C.
- Skydda dina webb-API:er och få åtkomst till skyddade API:er som Microsoft Graph för att arbeta med användarnas och organisationens data med Microsoft Entra ID och Azure Active Directory B2C.
- Lagra strukturerade data med Azure Cosmos DB.
- Lagra ostrukturerade data som text eller binära data med Azure Blob Storage.
- Lagra filer med Azure Files.
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ämtning 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:
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>
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(); } }
Undvik hård kodningsinformation som
client-id
ochclient-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; } }
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()); } }
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:
Om du behöver använda
SecretClient
på flera platser definierar du enSecretClient
böna. Sedan anslutSecretClient
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:
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>
Använd en strukturlista (BOM) för att hantera Spring Cloud Azure-versionen, som du ser i följande exempel:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.19.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Not
Om du använder Spring Boot 2.x måste du ange
spring-cloud-azure-dependencies
version till4.19.0
. Den här strukturlistan (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 Vilken version av Spring Cloud Azure ska jag använda.Lägg till följande egenskaper i din application.yml-fil:
spring: cloud: azure: keyvault: secret: endpoint:
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
ochclient-secret
.az login
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-tjänster, till exempel Service Bus, Storage, 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-stöd för Spring Security.
Azure Key Vault
Tillhandahåller Spring @Value
-anteckningsstöd för integrering med Azure Key Vault-hemligheter. Mer information finns i Azure-hemlighetshantering för Spring Cloud.
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:
- Skapa Azure-supportärenden. Kunder med en Azure-supportplan kan öppna ett Azure-supportärende. Vi rekommenderar det här alternativet om problemet kräver omedelbar uppmärksamhet.
- Registrera GitHub-ärenden i Azure/azure-sdk-for-java-förvaret. Vi använder GitHub-problem för att spåra buggar, frågor och funktionsförfrågningar. GitHub-problem är kostnadsfria, men svarstiden är inte garanterad. Mer information finns i Supportprocess för GitHub-problem.