Implementación de una Fuente de Configuración Personalizada

Esta guía muestra cómo crear un custom ConfigurableValueSource cargar valores de variables dinámicas desde fuentes distintas a HOCON files or DPS.

Descripción general

Las fuentes de configuración personalizadas le permiten cargar valores de variables dinámicas desde:

  • Bases de datos

  • Servicios de configuración remota (Consul, etcd, AWS Parameter Store)

  • Variables de entorno

  • Formatos de archivo personalizados

  • Cualquier otra fuente externa

Requisitos previos

  • El ipf-studio-configuration-core dependencia

  • Spring Boot aplicación

  • Comprensión de la ConfigurableValueSource interfaz

Pasos

1. Agregar Core Dependencia

<dependency>
    <groupId>com.iconsolutions.dsl.studio</groupId>
    <artifactId>ipf-studio-configuration-core</artifactId>
    <version>${ipf-studio-configuration.version}</version>
</dependency>

2. Implementar ConfigurableValueSource

Cree una clase que implemente el ConfigurableValueSource interfaz:

import com.iconsolutions.dsl.studio.configurablevalues.ConfigurableValue;
import com.iconsolutions.dsl.studio.configurablevalues.ConfigurableValueSource;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

@Component
public class DatabaseConfigurableValueSource implements ConfigurableValueSource {

    private final DynamicConfigRepository repository;

    public DatabaseConfigurableValueSource(DynamicConfigRepository repository) {
        this.repository = repository;
    }

    @Override
    public String getName() {
        return "database";
    }

    @Override
    public Integer getPrecedence() {
        return 15;  // Higher than HOCON (5) and default dynamic settings (10)
    }

    @Override
    public List<ConfigurableValue> getValues() {
        return repository.findAll().stream()
            .map(entity -> new ConfigurableValue(
                entity.getKey(),
                entity.getValue()
            ))
            .collect(Collectors.toList());
    }
}

3. Comprenda la Precedencia

La precedencia determina el orden en el que se procesan las fuentes. Esto solo se aplica al inicio, una vez que la aplicación está en funcionamiento, las actualizaciones a la DynamicExpressionRegistry será aplicado sin considerar los niveles de precedencia. Los valores más altos anulan los valores más bajos:

Fuente Precedencia Efecto

Archivos HOCON

5

Valores base procesados

Dynamic Settings

10

Puede anular HOCON

Su Fuente Personalizada

15

Anula ambos anteriores

Elija su precedencia en función de dónde se ajuste su fuente en la jerarquía de anulación.