Конфигурация Apache Commons устанавливает свойство переменной среды - как?
Мой проект SpringBoot имеет зависимость
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.4</version>
</dependency>
И мой файл bootstrap.properties имеет такие строки, как aws.s3.name=${env:S3_NAME}
Согласно документации на https://commons.apache.org/proper/commons-configuration/userguide/howto_basicfeatures.html, он должен работать с этим синтаксисом.
Однако, когда я пытаюсь использовать это:
@Value("${aws.s3.name}")
private String bucketName;
внутри моего класса @Service он инициализируется как "S3_NAME".
Зачем? Что я делаю неправильно?
РЕДАКТИРОВАТЬ: я забыл добавить, что я запускаю приложение в Docker-контейнере, передавая -e S3_NAME=some_bucket_name вместе с моей командой запуска Docker
1 ответ
Оказалось, что мы не использовали правильный инструмент (или правильно) - правильным способом было перенести свойства переменных среды из bootstrap.properties
в application.properties
- и тогда это начало работать!
Я не знаю, почему есть разница в том, как эти два файла работают в Spring Boot.