Конфигурация 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.

Другие вопросы по тегам