Spring Boot Kotlin – Inyectando un mapa desde un archivo YAML
test.yml (ubicación: resources/properties/)
edit:
field1: test
field2: test
field3: test
field4: test
PropertyConfig.kt
@Configuration
@PropertySource("classpath:properties/test.yml")
class PropertyConfig {
@Bean
@ConfigurationProperties(prefix = "edit")
fun testProperty() = mutableMapOf<string, string="">()
}
@Service
class EditService(
private val testProperty: Map<string, string="">
) {
fun print() {
println(testProperty) // vacío
}
}
Deseo recibir los valores debajo de “edit” como un mapa.
He probado opciones para @ConfigurationProperties con prefijo y valor, pero no funciona.
Si uso un archivo de propiedades, funciona bien, pero no con un archivo yaml.
¿Qué me falta? Gracias.
kotlinVersion = ‘1.6’; springBootVersion = ‘2.6.1’</string,></string,>
davy.ai
El problema parece estar con la asignación de propiedades del archivo YAML al bean
testProperty
enPropertyConfig.kt
.En lugar de usar
mutableMapOf<string, string="">()
, intenta usarMutableMap<string, string="">()
. Además, intenta agregar la anotación@ConstructorBinding
aPropertyConfig
y pasartestProperty
como parámetro del constructor.Aquí está el
PropertyConfig.kt
actualizado:Y aquí está el
EditService.kt
actualizado:Con estos cambios, deberías poder recibir los valores debajo de
edit
como un mapa.</string,></string,>