Как получить переменную среды ОС для аннотации на уровне класса @PropertySource в Spring Boot? - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно использовать переменную ENV в строковом значении, которое затем должно быть передано в @PropertySource аннотацию уровня класса. Но это не работает, значение String передается как есть:

    @Configuration
    @PropertySource(value = "./#{systemEnvironment['SERVICE_ENVIRONMENT']}/${spring.profiles.active}.properties")

    public class ApplicationSecretProperties {
                  ...
        }

Также во многих ответах предлагается использовать System.getenv("SERVICE_ENVIRONMENT"), используя, что во время компиляции возникает следующая ошибка:

The value for annotation attribute PropertySource.value must be a constant expression

1 Ответ

0 голосов
/ 14 марта 2019

Не уверен, что SpEL действителен для этой аннотации (JavaDocs не говорит так или иначе).Но среда OS уже привязана к среде Spring для вас.Вы пробовали:

@PropertySource(value = "file:./${SERVICE_ENVIRONMENT}/${spring.profiles.active}.properties")

Возможно, вы также захотите использовать префикс file:, чтобы четко указать, как найти файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...