Compartilhar via


Converter para a nova biblioteca de Configuração de Aplicativos para Spring Boot

Uma nova versão da biblioteca de Configuração de Aplicativos para Spring Boot está disponível. A versão apresenta novos recursos como, por exemplo, as propriedades globais do Azure para Spring Cloud, mas também algumas alterações interruptivas. Essas alterações não são retroativamente compatíveis com as instalações de configurações que usavam a versão anterior da biblioteca.

Este artigo fornece uma referência sobre as alterações e ações necessárias para migrar para a nova versão da biblioteca.

As IDs de grupo e de artefato foram alteradas

Todas as IDs de grupo e de artefato nas bibliotecas do Azure para Spring Boot foram atualizadas para corresponder a um novo formato. Os novos nomes de pacote são:

<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>

A versão 4.7.0 é a primeira versão 4.x da biblioteca. Corresponde à versão das outras bibliotecas do Azure para Spring Cloud.

A partir da versão 4.7.0, as bibliotecas de gerenciamento de recursos e Configurações de Aplicativos passaram a fazer parte da lista de materiais (BOM) das spring-cloud-azure-dependencies. O arquivo BOM garante que você não precise mais especificar a versão das bibliotecas no seu projeto. O BOM gerencia automaticamente a versão das bibliotecas.


Caminhos de pacote renomeados

Os caminhos do pacote para as bibliotecas de spring-cloud-azure-feature-management e spring-cloud-azure-feature-management-web foram renomeados de com.azure.spring.cloud.feature.manager para com.azure.spring.cloud.feature.management e com.azure.spring.cloud.feature.management.web.

Classes renomeadas

As seguintes classes foram alteradas:

  • ConfigurationClientBuilderSetup foi renomeado para ConfigurationClientCustomizer. Seu método de setup foi renomeado para customize.
  • SecretClientBuilderSetup foi renomeado para SecretClientCustomizer. Seu método de setup foi renomeado para customize.
  • AppConfigurationCredentialProvider e KeyVaultCredentialProvider foram removidos. Alternativamente, você pode usar as propriedades de configuração comuns do Azure para Spring Cloud ou modificar as credenciais usando ConfigurationClientCustomizer ou SecretClientCustomizer.

Carregamento do sinalizador de recurso

Os sinalizadores de recursos agora são compatíveis com o carregamento por meio de vários filtros de chave/rótulo:

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

A propriedade spring.cloud.azure.appconfiguration.stores[0].feature-flags.label foi removida. Alternativamente, você pode usar spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter para especificar um filtro de rótulo.

Usar personalizadores de cliente

ConfigurationClientCustomizer e SecretClientCustomizer são usados para personalizar as instâncias ConfigurationClient e SecretClient. Você pode usá-los para modificar os clientes antes que eles sejam usados para se conectarem à Configuração de Aplicativos. Isso permite o uso de qualquer tipo de credencial compatível com a biblioteca de Identidades do Azure. Você também pode modificar os clientes para definir um HttpClient ou HttpPipeline personalizado.

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);
    }
}

Possíveis conflitos com as propriedades globais do Azure para Spring Cloud

As propriedades de configuração comuns do Azure para Spring Cloud permitem que você personalize suas conexões com os serviços do Azure. A nova biblioteca de Configuração de Aplicativos seleciona qualquer configuração global ou de Configuração de Aplicativos que estiver configurada com as propriedades de configuração comuns do Azure para Spring Cloud. Sua conexão com a Configuração do Aplicativo é alterada se as configurações forem configuradas para outra biblioteca do Azure para Spring Cloud.

Você pode substituir esse comportamento usando ConfigurationClientCustomizer/SecretClientCustomizer para modificar os clientes.

Aviso

As propriedades globais do Azure para Spring Cloud podem fornecer mais de um método de conexão à medida que coletam automaticamente credenciais como variáveis de ambiente e as utilizam para se conectar aos serviços do Azure. Esse comportamento poderá causar problemas se você estiver usando um método de conexão diferente como, por exemplo, a Identidade gerenciada, e as propriedades globais o estiverem ignorando.