Estoy tratando de configurar @PropertySource para mi aplicación basada en Spring.
En Java, podría hacer algo como esto:
@PropertySource(value = {"application.properties","other.properties" })
arrayOf
en Kotlin pero termino con una falta de coincidencia de tipo:
@PropertySource(value = arrayOf("application.properties", "other.properties"))
¿Cuál es el camino correcto para ir aquí?
El parámetro de anotación de value
se maneja de una manera especial en Kotlin (siguiendo su manejo especial en Java), y si tiene un tipo de matriz, Kotlin lo convierte en un vararg
. Por lo tanto, la sintaxis correcta aquí es simplemente:
@PropertySource("application.properties", "other.properties")
Si desea especificar el nombre del parámetro explícitamente, use el operador de expansión para expandir la matriz en varargs:
@PropertySource(value = *arrayOf("application.properties", "other.properties"))
Para cualquier otro parámetro de anotación de matriz, simplemente debe usar arrayOf()
normalmente.
Agrego esto en caso de que ayude a alguien...
Necesitaba varias instancias de la misma anotación, pero también necesitaba establecer otros atributos de la anotación.
@Configuration @PropertySources( PropertySource( value = ["classpath:consul.properties"]), PropertySource( value = ["file:/run/example/consul.properties"], ignoreResourceNotFound = true) )