Compartir a través de


Conversión a la nueva biblioteca Spring Boot de App Configuration

Ahora hay una nueva versión disponible de la biblioteca de Azure App Configuration para Spring Boot. La versión presenta nuevas características, como las propiedades globales de Spring Cloud Azure, pero también algunos cambios importantes. Estos cambios no son compatibles con versiones anteriores de las configuraciones que usaban la versión anterior de la biblioteca.

Este artículo se proporciona una referencia sobre los cambios y las acciones necesarias para migrar a la nueva versión de la biblioteca.

Id. de grupo y artefacto cambiados

Todos los Identificadores de grupo y artefacto de las bibliotecas de Azure para Spring Boot se actualizan para que coincidan con un nuevo formato. Los nuevos nombres de paquete son:

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

La versión 4.7.0 es la primera versión 4.x de la biblioteca. Coincide con la versión de las otras bibliotecas de Spring Cloud Azure.

A partir de la versión 4.7.0, las bibliotecas de administración de características y App Configuration forman parte de la lista de materiales (BOM) spring-cloud-azure-dependencies. El archivo BOM garantiza que ya no se necesite especificar la versión de las bibliotecas del proyecto. La lista de materiales administra automáticamente la versión de las bibliotecas.


Se ha cambiado el nombre de las rutas de acceso del paquete

Las rutas de acceso del paquete para las bibliotecas spring-cloud-azure-feature-management y spring-cloud-azure-feature-management-web se han cambiado de com.azure.spring.cloud.feature.manager a com.azure.spring.cloud.feature.management y com.azure.spring.cloud.feature.management.web.

Clases con nombre cambiado

Las siguientes clases han cambiado:

  • Se ha cambiado el nombre de ConfigurationClientBuilderSetup a ConfigurationClientCustomizer. Se ha cambiado el nombre del parámetro setup a customize.
  • Se ha cambiado el nombre de SecretClientBuilderSetup a SecretClientCustomizer. Se ha cambiado el nombre del parámetro setup a customize.
  • AppConfigurationCredentialProvider y KeyVaultCredentialProvider se han quitado. En su lugar, puede usar las propiedades de configuración comunes de Spring Cloud Azure o modificar las credenciales mediante ConfigurationClientCustomizer o SecretClientCustomizer.

Carga de marcas de características

Las marcas de características ahora admiten la carga mediante varios filtros de clave/etiqueta:

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

Se ha quitado la propiedad spring.cloud.azure.appconfiguration.stores[0].feature-flags.label. En su lugar, puede usar spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter para especificar un filtro de etiqueta.

Uso de personalizadores de cliente

ConfigurationClientCustomizer y SecretClientCustomizer se usan para personalizar las instancias de ConfigurationClient y SecretClient. Puede usarlos para modificar los clientes antes de que se usen para conectarse a App Configuration. Esto permite usar cualquier tipo de credencial compatible con la biblioteca de identidades de Azure. También puede modificar los clientes para establecer un personalizado HttpClient o 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);
    }
}

Posibles conflictos con las propiedades globales de Spring Cloud Azure

Las propiedades de configuración comunes de Spring cloud Azure le permiten personalizar las conexiones a los servicios de Azure. La nueva biblioteca App Configuration recoge cualquier configuración global o de App Configuration que esté configurada con las propiedades de configuración comunes de Spring Cloud Azure. La conexión a App Configuration cambia si las configuraciones están establecidas para otra biblioteca de Azure de Spring Cloud.

Puede invalidar este comportamiento mediante ConfigurationClientCustomizer/SecretClientCustomizer para modificar los clientes.

Advertencia

Las propiedades globales de Spring Cloud Azure pueden proporcionar más de un método de conexión, ya que seleccionan automáticamente las credenciales, como las variables de entorno, y las usan para conectarse a los servicios de Azure. Este comportamiento puede causar problemas si usa otro método de conexión, como la identidad administrada, y las propiedades globales lo reemplazan.