Мне нужно настроить свойство Spring (в моем случае для Flyway) в application.yml в зависимости от типа ОС, на которой запущено приложение. AFAIK, Spring не поддерживает выражения SpEL в файлах YAML.
Пока что лучшее решение, которое я мог придумать, использует системное свойство Java os.name
и свойство поиска:
spring:
flyway:
collations:
Linux: de_DE
Windows 10: de-DE-x-icu
Windows 8.1: de-DE-x-icu
Windows 7: de-DE-x-icu
placeholders:
collation: ${spring.flyway.collations.${os.name}:de_DE}
Это очень уродливо, главным образом потому, что все возможное значения для os.name
должны быть явно перечислены как полные литералы.
Есть ли лучший способ сделать это? Может быть, делегировать spring.flyway.placeholders.collation
какому-либо компоненту конфигурации для установки программно? Это также должно работать для модульных тестов.