什么是 Spring Cloud Azure?
Spring Cloud Azure 是一个开放源代码项目,可帮助更轻松地在 Spring 应用程序中使用 Azure 服务。
Spring Cloud Azure 是一个开放源代码项目,其中包含可供公众使用的所有资源。 以下列表提供了指向这些资源的链接:
什么是 Spring Cloud Azure?
Spring Cloud Azure 可帮助更轻松地在 Spring 应用程序中完成以下任务:
- 使用 Azure 应用程序配置 管理配置属性。
- 使用Azure 事件中心、Azure 服务总线和Azure 存储队列发送和接收消息。
- 使用 Azure 密钥库管理机密和证书。
- 支持使用 Microsoft Entra ID 预配的工作或学校帐户登录。
- 支持用户使用 Facebook 和 Google 等社交帐户通过 Azure Active Directory B2C 登录。
- 保护 Web API 并访问受保护的 API(如 Microsoft Graph)以使用 Microsoft Entra ID 和 Azure Active Directory B2C 处理用户和组织的数据。
- 使用 Azure Cosmos DB 存储结构化数据。
- 使用Azure Blob 存储存储非结构化数据(如文本或二进制数据)。
- 使用Azure 文件存储存储文件。
下图概述了这些功能:
使用 Spring Cloud Azure 的好处
以下部分演示了使用 Spring Cloud Azure 的好处。 在本部分中,将检索存储在 Azure 密钥库中的机密作为示例。 本部分比较了使用和不使用 Spring Cloud Azure 开发 Spring Boot 应用程序之间的差异。
没有 Spring Cloud Azure
如果没有 Spring Cloud Azure,如果要检索存储在 Azure 密钥库中的机密,则需要执行以下步骤:
将以下依赖项添加到 pom.xml 文件:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
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(); } }
避免硬编码信息,例如
client-id
client-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; } }
更新应用程序代码,如以下示例所示:
@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()); } }
将必要的属性添加到 application.yml 文件,如以下示例所示:
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
如果需要在多个位置使用
SecretClient
,请定义SecretClient
豆子。 然后,自动连接SecretClient
相关位置。
使用 Spring Cloud Azure
使用 Spring Cloud Azure,如果要检索存储在 Azure 密钥库中的机密,则要求更简单,如以下步骤所示:
将以下依赖项添加到 pom.xml 文件:
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
使用材料清单(BOM)管理 Spring Cloud Azure 版本,如以下示例所示:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
注意
如果使用 Spring Boot 2.x,请确保将
spring-cloud-azure-dependencies
版本设置为4.17.0
。 此材料清单(BOM)应在pom.xml文件的部分中进行配置<dependencyManagement>
。 这可确保所有 Spring Cloud Azure 依赖项都使用相同的版本。 有关用于此 BOM 的版本的详细信息,请参阅 我应使用哪个版本的 Spring Cloud Azure。将以下属性添加到 application.yml 文件:
spring: cloud: azure: keyvault: secret: endpoint:
使用以下命令使用 Azure CLI 登录。 然后,Azure CLI 将提供凭据,因此无需添加其他凭据信息,例如
client-id
和client-secret
。az login
相关位置中的自动连接
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()); } }
Spring Cloud Azure 除了自动配置 SecretClient
之外,还提供一些其他功能。 例如,可用于 @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 等。
Microsoft Entra ID
提供对 Spring Security 与 Microsoft Entra ID 的集成支持,以便进行身份验证。 更多信息请参阅《Spring Security 的 Spring Cloud Azure 支持》。
Azure Key Vault
为与 Azure 密钥库 机密集成提供 Spring @Value
批注支持。 有关详细信息,请参阅 Spring Cloud Azure 机密管理。
Azure 存储
为 Azure 存储服务提供 Spring Boot 支持。 有关详细信息,请参阅 Spring Cloud Azure 资源处理。
获取支持
如果需要对 Spring Cloud Azure 的支持,可以通过以下方式寻求帮助:
- 创建Azure 支持票证。 具有Azure 支持计划的客户可以开具Azure 支持票证。 如果你的问题需要立即注意,我们建议使用此选项。
- 在 Azure/azure-sdk-for-java 存储库中提交 GitHub 问题。 我们使用 GitHub 问题来跟踪 bug、问题和功能请求。 GitHub 问题是免费的,但无法保证响应时间。 有关详细信息,请参阅 GitHub 问题支持过程。
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈