Estoy tratando de cargar una matriz de cadenas del archivo application.yml. Esta es la configuración:
ignore:
filenames:
- .DS_Store
- .hg
Esta es la clase:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Hay otras configuraciones en la misma clase que se cargan bien. No hay pestañas en mi archivo yaml. Todavía recibo la siguiente excepción:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
fuente
fuente
@Value
(siempre que se registre un convertidor, que creo que estará en Spring Boot).@Configuration
, pero usar en su@Component
lugar hizo el truco.@Component
es más apropiado: stackoverflow.com/questions/12229282/…usar valores separados por comas en application.yml
código de Java para el acceso
Está funcionando ;)
fuente
De los documentos de arranque de primavera https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Las listas de YAML se representan como claves de propiedad con desreferenciadores [index], por ejemplo, este YAML:
Se transformaría en estas propiedades:
Para enlazar propiedades como esa usando las utilidades Spring DataBinder (que es lo que
@ConfigurationProperties
hace) necesita tener una propiedad en el bean de destino de tipojava.util.List
y debe proporcionar un configurador o inicializarlo con un valor mutable, por ejemplo, esto se enlazará a las propiedades anteriores. Así es como se vería el código de la pregunta.fuente
getXxx()
es necesario para que funcione, y debe usar unList
, noSet
.servers: ${my.servers}
:? Para entrarmy.servers[0]
y entrarmy.servers[1]
en el yaml? Estoy tratando de tener configuraciones dependientes de la etapaAdemás de la respuesta de Ahmet, puede agregar saltos de línea a la cadena separada por coma mediante el
>
símbolo.application.yml :
Código Java :
fuente
La respuesta de Ahmet proporciona cómo asignar los valores separados por comas a la matriz de cadenas.
Para usar la configuración anterior en diferentes clases, es posible que necesite crear captadores / establecedores para esto ... Pero si desea cargar esta configuración una vez y seguir usando esto como un bean con anotación Autowired, aquí es cómo lo logré:
En ConfigProvider.java
En clases externas:
puede usar la misma lista en cualquier otro lugar mediante el cableado automático.
fuente
@Configuration
al comienzo de la clase enConfigProvider.java
. De lo contrario, obtuve Source requirió un bean del tipo 'java.util.List' que no se pudo encontrar.archivo yml:
Hay mucho más que puedes jugar con spring spEL.
fuente
Bueno, lo único que puedo hacer que funcione es así:
Y no olvides la @Configuración sobre tu clase ...
Sin la separación ",", no hay suerte ...
También funciona (arranque 1.5.8 versie)
fuente
En mi caso, se trataba de un problema de sintaxis en el archivo .yml. Yo tenía:
y la lista en mi archivo .yml:
no estaba leyendo en el campo @ Valor-anotado. Cuando cambié la sintaxis en el archivo .yml a:
Funcionó bien.
fuente
archivo yml:
fuente