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 Bus och Azure Storage Queue.
- Hantera hemligheter och certifikat med Azure Key Vault.
- Stöd för användarinloggning med arbets- eller skolkonton som etablerats 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 nödvändiga egenskaper 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 kan du automatiskt kabelanslutaSecretClient
på 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.17.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Kommentar
Om du använder Spring Boot 2.x måste du ange
spring-cloud-azure-dependencies
versionen till4.19.0
. Den här strukturlistan (BOM) bör konfigureras i avsnittet i<dependencyManagement>
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 den här strukturlistan 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
Autotråd
SecretClient
på relevanta platser, som du ser i 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 Stöd för Spring Cloud Azure för Spring Security.
Azure Key Vault
Tillhandahåller springanteckningsstöd @Value
för integrering med Azure Key Vault-hemligheter. Mer information finns i Azure-hemlighetshantering för Spring Cloud.
Azure Storage
Ger 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 en Azure-supportbegäran. Vi rekommenderar det här alternativet om problemet kräver omedelbar uppmärksamhet.
- Fil-GitHub-problem i Azure/azure-sdk-for-java-lagringsplatsen. 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 Supportprocessen för GitHub-problem.