java - example - Spring Boot: Load @Value del archivo YAML
spring boot application.yml example (1)
M. Deinum tiene razón, la configuración que he proporcionado está funcionando: el archivo yml
se yml
incorrectamente, por lo que no se pudo encontrar la propiedad.
Necesito cargar una propiedad desde un archivo .yml
, que contiene la ruta a una carpeta donde la aplicación puede leer archivos.
Estoy usando el siguiente código para inyectar la propiedad:
@Value("${files.upload.baseDir}")
private String pathToFileFolder;
El archivo .yml
para desarrollo se encuentra en src/main/resources/config/application.yml
, estoy ejecutando la aplicación con el siguiente comando en producción, para anular las configuraciones de desarrollo:
java -jar app.jar --spring.config.location=/path/to/application-production.yml
La documentación de Spring Boot dice:
SpringApplication cargará las propiedades de los archivos application.properties en las siguientes ubicaciones y las agregará al Spring Environment:
Subdirectorio A / config del directorio actual.
El directorio actual
Un paquete classpath / config
La raíz del classpath
Tanto como:
También puede usar archivos YAML (''.yml'') como una alternativa a ''.properties''.
El archivo .yml
contiene:
{...}
files:
upload:
baseDir: /Users/Thomas/Code/IdeaProjects/project1/files
{...}
Y mi clase de Application
está anotada con:
@SpringBootApplication
@EnableCaching
Cuando ejecuto la aplicación, obtengo una excepción:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ''files.upload.baseDir'' in string value "${files.upload.baseDir}"
¿Tengo que usar la clase YamlPropertySourceLoader
o agregar una anotación especial para habilitar el soporte para .yml
en Spring Boot?
Editar: El archivo .yml
contiene algunas otras propiedades que Spring Boot carga correctamente como dataSource.XXX
o hibernate.XXX
.