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
DynamicVariableLibraryclases -
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
modelsel array representa un MPS modelo -
El
namedebe coincidir con su MPS nombre del modelo exactamente -
Claves en
configurable-values-globalson 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á:
-
Detectar
DynamicVariableLibrarybeans—MPS-código generado) -
Crear un
HoconConfigurableValueSourcedesde la Config bean -
Crear un
ConfigurableValuesManagerque 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-valuessobrescribir 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.