领先一步
VMware提供培训和认证,以加速您的进步。
了解更多Spring Cloud Azure 是一个开源项目,它使用 Spring 应用程序开发中常用的表达式和配置,提供 Spring 应用程序与 Azure 服务之间的集成。尽管名称相似,但 Spring Cloud Azure 与 Azure Spring Apps 不同,后者是一个用于在 Azure 上运行 Spring 应用的 Web 托管平台。
Spring Cloud Azure 可以帮助简化在 Spring 应用程序中完成以下任务:
下图概述了这些功能:
以下部分演示了使用 Spring Cloud Azure 的好处。在本节中,将以检索存储在 Azure Key Vault 中的密钥为例。本节比较了使用和不使用 Spring Cloud Azure 开发 Spring Boot 应用程序的区别。
如果不使用 Spring Cloud Azure,如果要检索存储在 Azure Key Vault 中的密钥,则需要执行以下步骤:
将以下依赖项添加到您的 *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
bean。然后,在相关位置自动装配 SecretClient
。
使用 Spring Cloud Azure,如果要检索存储在 Azure Key Vault 中的密钥,则要求更简单,步骤如下所示:
将以下依赖项添加到您的 *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>4.19.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
将以下属性添加到您的 *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());
}
}
除了自动配置的 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);
}
}
为 Azure 服务(如服务总线、存储、Active Directory 等)提供自动配置支持。
提供Spring Security与Azure Active Directory集成支持,用于身份验证。更多信息,请参阅Spring安全支持部分的Spring Cloud Azure开发者指南。
提供与Azure Key Vault Secrets集成的Spring @Value
注解支持。更多信息,请参阅密钥管理部分的Spring Cloud Azure开发者指南。
提供对Azure存储服务的Spring Boot支持。更多信息,请参阅资源处理部分的Spring Cloud Azure开发者指南。
如果您需要Spring Cloud Azure的支持,您可以通过以下方式寻求帮助:
使用以下方法引导您的应用程序 Spring Initializr.