Configurando Valores Dinámicos con HOCON

Esta guía muestra cómo configurar valores de variables dinámicas utilizando HOCON archivos de Notación de Objetos Configurados para Humanos (Human-Optimized Config Object Notation) en un Spring Boot aplicación.

Requisitos previos

  • A Spring Boot aplicación

  • Código generado por MPS que contiene DynamicVariableLibrary clases

  • Maven, para la gestión de dependencias

Pasos

1. Agregar Maven Dependencias

Añada la Configuración del Estudio IPF HOCON Spring Inicio para su proyecto:

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

Esto incluye transitivamente:

  • ipf-studio-configuration-core - Core interfaces

  • ipf-studio-configuration-hocon - HOCON analizador

  • ipf-studio-configuration-spring-starter - Spring Boot auto-configuración

  • com.typesafe:config - Biblioteca de Configuración Segura de Tipos

2. Crear HOCON Archivo de Configuración

Crear un application.conf archivo en su src/main/resources directorio:

ipf.studio = {
    models = [
        {
            name = "paymentService",
            configurable-values-global = {
                upperBound = 5000,
                minAmount = 10,
                allowedCurrencies = ["USD", "EUR", "GBP", "CHF"]
            }
            entities = []
        }
    ]
}

Puntos clave:

  • Cada entrada en models el array representa un MPS modelo

  • El name debe coincidir con su MPS nombre del modelo exactamente

  • Claves en configurable-values-global son los nombres de las variables definidos en DynamicVariableLibrary nodos dentro de MPS

  • La clave compuesta se forma automáticamente:`{modelName}_{variableKey}`

3. Verifique la Auto-Configuración

Con las dependencias y la configuración en su lugar,Spring Boot la autoconfiguración hará:

  1. Detectar DynamicVariableLibrary beans—​MPS-código generado)

  2. Crear un HoconConfigurableValueSource desde la Config bean

  3. Crear un ConfigurableValuesManager que carga y registra valores

El ConfigurableValuesManager valida que los valores de configuración coincidan con los tipos esperados definidos en su DynamicVariable declaraciones y generará un IllegalArgumentException en el inicio si hay un desajuste de tipo.

4. Configuración Específica de la Entidad (Opcional)

La configuración con alcance de entidad permite que diferentes entidades de procesamiento tengan sus propios valores para variables dinámicas, anulando los valores predeterminados globales cuando la Entidad de Procesamiento correspondiente está en contexto.

Formato de Configuración

Extienda su application.conf incluir anulaciones específicas de la entidad:

ipf.studio = {
    models = [
        {
            name = "paymentService",

            // Global defaults
            configurable-values-global = {
                upperBound = 1000,
                minAmount = 1,
                allowedCurrencies = ["USD", "EUR"]
            },

            // Entity-specific overrides
            entities = [
                {
                    name = "entity-1",
                    configurable-values = {
                        upperBound = 50000,
                        allowedCurrencies = ["USD", "EUR", "GBP", "CHF", "JPY"]
                    }
                },
                {
                    name = "entity-2",
                    configurable-values = {
                        upperBound = 5000
                    }
                },
                {
                    name = "entity-3",
                    configurable-values = {
                        upperBound = 100,
                        minAmount = 10
                    }
                }
            ]
        }
    ]
}

Puntos clave:

  • Cada entidad tiene un name(identificador de cadena)

  • Entidad configurable-values sobrescribir valores globales

Solución de problemas

Valores No Aplicados

  • Verifique el nombre del modelo en HOCON matches your MPS nombre del modelo exactamente

  • Verifique que la Config bean está disponible en el Spring context

  • Busque registros de advertencia sobre claves de configuración no reconocidas.

Advertencia de Claves de Configuración Desconocidas

Si observa advertencias como:

WARN ConfigurableValuesManager - Configuration key 'modelName_unknownVar' from source 'HoconConfigurableValueSource' does not match any known DynamicVariable

Esto significa que el HOCON el archivo contiene una clave que no corresponde a ninguna definida DynamicVariable. Verifique si hay errores tipográficos en el nombre de la variable.

Errores de incompatibilidad de tipo

Si un valor de configuración no coincide con el tipo esperado, verá un error al iniciar:

java.lang.IllegalArgumentException: Type mismatch for configuration variable with key: 'paymentService_upperBound' - expected type java.lang.Integer but got java.lang.String

Esto indica el HOCON el tipo de valor no coincide con el DynamicVariable tipo. Por ejemplo, si upperBound se define como Integer pero configurado como una cadena "5000" en lugar de numérico 5000.