转换为新的应用程序配置 Spring Boot 库
现已推出新版 Azure 应用程序配置 Spring Boot 库。 该版本引入了 Spring Cloud Azure 全局属性之类的新功能,但也引入了一些中断性变更。 这些变更与使用以前的库版本的配置设置不向后兼容。
本文提供有关迁移到新库版本所需的更改和操作的参考。
适用于 Spring Boot 的 Azure 库中的所有组和工件 ID 都已更新,以匹配新格式。 新的包名称为:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-feature-management</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-feature-management-web</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.8.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4.7.0 版本是库的第一个 4.x 版本。 它与其他 Spring Cloud Azure 库的版本相匹配。
从版本 4.7.0 开始,应用程序配置和功能管理库是 spring-cloud-azure-dependencies
材料清单 (BOM) 的一部分。 BOM 文件确保你不再需要在项目中指定库的版本。 BOM 会自动管理库的版本。
spring-cloud-azure-feature-management
和 spring-cloud-azure-feature-management-web
库的包路径已从 com.azure.spring.cloud.feature.manager
重命名为 com.azure.spring.cloud.feature.management
和 com.azure.spring.cloud.feature.management.web
。
以下类已更改:
ConfigurationClientBuilderSetup
已重命名为ConfigurationClientCustomizer
。 它的setup
类已重命名为customize
。SecretClientBuilderSetup
已重命名为SecretClientCustomizer
。 它的setup
类已重命名为customize
。- 已删除
AppConfigurationCredentialProvider
和KeyVaultCredentialProvider
。 可以改用 Spring Cloud Azure 通用配置属性,或者使用ConfigurationClientCustomizer
或SecretClientCustomizer
修改凭据。
功能标志现在支持通过多个键/标签筛选器进行加载:
spring.cloud.azure.appconfiguration.stores[0].feature-flags.enable
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].key-filter
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter
spring.cloud.azure.appconfiguration.stores[0].monitoring.feature-flag-refresh-interval
spring.cloud.azure.appconfiguration.stores[0].feature-flags.label
属性已移除。 可以改用 spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter
来指定标签筛选器。
ConfigurationClientCustomizer
和 SecretClientCustomizer
用于自定义 ConfigurationClient
和 SecretClient
实例。 在使用客户端连接应用配置之前,可以使用它们修改客户端。 这样便可使用 Azure 标识库支持的任何凭据类型。 还可以修改客户端,设置自定义 HttpClient
或 HttpPipeline
.
import com.azure.core.credential.TokenCredential;
import com.azure.data.appconfiguration.ConfigurationClientBuilder;
import com.azure.identity.AzureCliCredential;
import com.azure.identity.AzureCliCredentialBuilder;
import com.azure.identity.ChainedTokenCredential;
import com.azure.identity.ChainedTokenCredentialBuilder;
import com.azure.identity.EnvironmentCredentialBuilder;
import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer;
public class ConfigurationClientCustomizerImpl implements ConfigurationClientCustomizer {
@Override
public void customize(ConfigurationClientBuilder builder, String endpoint) {
AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build();
String managedIdentityClientId = System.getenv("MANAGED_IDENTITY_CLIENT_ID");
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
.clientId(managedIdentityClientId).build();
ChainedTokenCredential credential = new ChainedTokenCredentialBuilder().addLast(cliCredential)
.addLast(managedIdentityCredential).build();
builder.credential(credential);
}
}
使用 Spring Cloud Azure 通用配置属性,可以自定义与 Azure 服务的连接。 新的应用程序配置库将选取使用 Spring Cloud Azure 通用配置属性配置的任何全局或应用程序配置设置。 如果已为另一个 Spring Cloud Azure 库设置了配置,则与应用程序配置的连接将发生更改。
可以使用 ConfigurationClientCustomizer
/SecretClientCustomizer
修改客户端以替代此行为。
警告
Spring Cloud Azure 全局属性可能会提供多个连接方法,因为它们会自动选取凭据(例如环境变量),并使用它们连接到 Azure 服务。 如果你使用其他连接方法(例如托管标识),而全局属性正在替代此方法,则此行为可能会导致问题。