Есть ли способ предоставить значения по умолчанию для переменных env в файле свойств с apache-commons? - PullRequest
0 голосов
/ 28 мая 2019

Я использую org.apache.commons:commons-configuration2:2.5 для чтения параметров конфигурации из файла конфигурации. В моем application.properties я хочу указать значения по умолчанию для переменных среды, если одна из них не была установлена, например, вот так (похоже на Spring):

idp.username=${env:IDP_USERNAME:defaultUsername}

Однако, хотя настройка переменной env работает нормально, указание значения по умолчанию, подобного этому, не работает. К сожалению, я не могу найти ничего связанного с этим в документации commons-configuration2. Возможно ли это без явной проверки отсутствующего значения в коде Java? Использует ли Spring Boot определенную библиотеку для этого, которую я мог бы также использовать? Я не хочу разбирать мое простое приложение на Spring Framework только для того, чтобы иметь такую ​​конфигурацию.

Пример упрощенного кода, который я сейчас использую (здесь я, очевидно, мог бы проверить каждое извлекаемое свойство и заменить его на значение по умолчанию, но я бы хотел избежать этого и обработать его непосредственно в файле конфигурации):

private void loadConfigFile() {
        logger.info("Attempting to load `application.properties`...");
        Configurations configBuilder = new Configurations();
        try {
            Configuration props = configBuilder.properties(new File("application.properties"));

            // application config
            this.conf = new Config();
            this.conf.setAPIEndpoint(props.getString("api.endpoint"));
            this.conf.setMaxConnections(props.getInt("api.maxConnections"));
            ...

            logger.info("Config successfully loaded!");
        } catch (Exception e) {
            logger.error("Could not load `application.properties`: {}", e.getMessage());
            System.exit(1);
        }
    }

Есть предложения?

...