Java: Предпочтения API по сравнению с Apache Конфигурация палаты общин

Я должен позволить пользователю хранить/загружать произвольное число списков объектов (предположите, что они являются сериализуемыми). Концептуально я хочу модель данных как

class FooBean { /* bean stuff here */ }

class FooList {
    final private Set items = new HashSet();

    public boolean add(FooBean item) { return items.add(item); }
    public boolean remove(FooBean item) { return items.remove(item); }
    public Collection getItems() { 
       return Collections.unmodifiableSet(items); 
    }
}

class FooStore {
    public FooStore() {
       /* something... uses Preferences or Commons Configuration */ 
    }
    public FooList load(String key) {
       /* something... retrieves a FooList associated with the key */ 
    }
    public void store(String key, FooList items) { 
       /* something... saves a FooList under the given key */
    }
}

Я должен использовать Предпочтения Конфигурация палаты общин или API? Каковы преимущества каждого?

6
задан Emmanuel Bourg 2 August 2011 в 11:30
поделиться

3 ответа

Что ж, commons-configuration, как и многие другие проекты apache, является слоем абстракции, позволяющим без всякого видения использовать настройки, хранилище ldap, файлы свойств и т. Д. Итак, ваш вопрос можно переписать как есть: нужно ли вам изменить формат, который вы используете для хранения ваших предпочтений? Если нет, предпочтительнее использовать настройки Java. В другом месте рассмотрите переносимость общей конфигурации.

6
ответ дан 10 December 2019 в 00:37
поделиться

Учитывая ваш пример с хранением набора значений, связанных с ключом, у вас будут следующие варианты при использовании каждой библиотеки

  • Preferences - хранить как байтовый массив, связанный с ключом
  • Commons Configuration - хранить как список строк, связанных с ключом

Таким образом, выбор может сводиться к тому, что легче преобразовать FooBean в байтовый массив или в строку.

Другим преимуществом Commons Configuration является возможность использования различных бэкендов. Я использовал его для хранения свойств в базе данных. Если вы хотите хранить объекты где-то еще, кроме локальной машины пользователя, это будет лучшим выбором.

2
ответ дан 10 December 2019 в 00:37
поделиться

Обычно я использую Preferences API, который является частью JDK, если нет проблем, которые иначе решаются с помощью commons-config.

Лично, когда я использую Spring, у него есть Property Configurer, который делает большую часть этого за меня.

1
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: