Я использую 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);
}
}
Есть предложения?