Время выполнения файла свойств обновления Java
Я пишу отдельное Java-приложение для мониторинга производства. После запуска API настраивается на значения по умолчанию, заданные в файле.properties. в рабочем состоянии можно изменить конфигурацию API и соответствующим образом обновить файл.properties. Есть ли способ достичь этого? или есть другие подходы для реализации этого?
заранее спасибо
6 ответов
Класс Java Properties ( api здесь) определяет методы "load" и "store", которые должны делать именно это. Используйте FileInputStream и FileOutputStream, чтобы указать файл для сохранения.
Вы можете использовать очень простой подход, основанный на классе java.util.Properties, который действительно имеет методы загрузки и хранения, которые вы можете использовать в сочетании с FileInputStream и FileOutputStream:
Но на самом деле, я бы рекомендовал использовать существующую библиотеку конфигурации, такую как Commons Configuration (среди прочих). Обратитесь к разделу Свойства, чтобы узнать, как загрузить, сохранить и автоматически перезагрузить файл свойств с помощью его API.
Я полностью согласен с тем, что API конфигурации Apache Commons действительно хороший выбор.
Этот пример обновляет свойства во время выполнения
File propertiesFile = new File(getClass().getClassLoader().getResource(fileName).getFile());
PropertiesConfiguration config = new PropertiesConfiguration(propertiesFile);
config.setProperty("hibernate.show_sql", "true");
config.save();
Из поста как обновить файл свойств в Java
Надеюсь, это поможет!
Насколько я знаю, свойства java.util.Properties не обеспечивают перезагрузку во время выполнения. http://commons.apache.org/configuration/ предоставляет поддержку для перезагрузки конфигурации во время выполнения. Стратегию перезагрузки можно настроить, установив ReloadingStrategy в объекте PropertiesConfiguration. Он также предлагает различные другие полезные утилиты для настройки вашего приложения.
В добавок к load
а также store
метод Properties
Класс, вы также можете использовать библиотеку конфигурации Apache Commons, которая предоставляет функции для простого управления файлами конфигурации (а не только файлами.properties).
API общей конфигурации Apache предоставил различные стратегии для перезагрузки файлов свойств во время выполнения. FileChangedReloadingStrategy является одним из них. Перейдите по этой ссылке, чтобы увидеть пример перезагрузки файла свойств во время выполнения с использованием FileChangedReloadingStrategy.
Попробуй это:
// Запись в файл свойств во время выполнения
public void setValue(String key, String value) {
Properties props = new Properties();
String path = directoryPath+ "/src/test/resources/runTime.properties";
File f = new File(path);
try {
final FileInputStream configStream = new FileInputStream(f);
props.load(configStream);
configStream.close();
props.setProperty(key, value);
final FileOutputStream output = new FileOutputStream(f);
props.store(output, "");
output.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
// Читаем тот же файл
public String getValue(String key) {
String value = null;
try {
Properties prop = new Properties();
File f = new File(directoryPath+"/src/test/resources/runTime.properties");
if (f.exists()) {
prop.load(new FileInputStream(f));
value = prop.getProperty(key);
}
} catch (Exception e) {
System.out.println("Failed to read from runTime.properties");
}
return value;
}