En anteriores publicaciones vimos cómo agrupar parámetros de configuración mediante el uso de la anotación @ConfigurationProperties con el elemento prefix, así como definir la ruta hasta un archivo de configuración, pero en ocasiones un único archivo de propiedades puede extenderse demasiado por lo que es más conveniente separarlo en varios ficheros.
Podemos por ejemplo organizar los archivos de configuración de la siguiente manera:
// file: resources/admin_cfg.yml
name: "John"
// file: resources/user_cfg.yml
user.firstname: "Ben"
user.lastname: "Stuart"
Ahora podemos crear sus clases de configuración, e indicar la ruta de los archivos utilizando la anotación @PropertySource
@Configuration
@ConfigurationProperties
@PropertySource("classpath:admin_cfg.yml") // <- Indicamos la ruta
data class AdminConfig(
var name: String = "",
)
@Configuration
@ConfigurationProperties(prefix = "user") // <- Indicamos el prefijo (si fuera necesario)
@PropertySource("classpath:user_cfg.yml") // <- Indicamos la ruta
data class UserConfig(
var firstname: String = "",
var lastname: String = "",
)
El acceso a estas propiedades se realiza instanciando la clase de configuración que deseemos, y llamando a la propiedad que nos interese:
@Service
class UsersService(
val config: UserConfig,
) {
fun getFullName(): String = "${config.lastname}, ${config.firstname}"
}
Fuente: 24.8 Type-safe Configuration Properties @ Spring Boot Reference Guide
Top comments (0)