Решение
Одним из способов будет использование списков через запятую в ваших профилях:
spring.profiles: dev
config.some.value: ELEMENT1,ELEMENT2
spring.profiles: staging
config.some.value: ELEMENT1,ELEMENT2,ELEMENT3
Тогда вы сможете получить к нему доступ в application.yml
some.value: ${config.some.value}
Это решение не требует предварительного определения размера списка.
Объяснение
Причина, по которой это работает , описана здесь .
В частности:
YAML lists are represented as comma-separated values (useful for simple String values) and also as property keys with [index] dereferencers, for example this YAML:
servers:
- dev.bar.com
- foo.bar.com
Would be transformed into these properties:
servers=dev.bar.com,foo.bar.com
servers[0]=dev.bar.com
servers[1]=foo.bar.com
В частности, это означает, что если вы укажете разделенный запятыми список строк в application.yml
и определите List<String>
как значение в @ConfigurationProperties
, связыватель свойств конфигурации пружины преобразует этот разделенный запятыми список строк в List<Strings>
.