Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Еще раз о хранении настроек приложения |
Автор: LSD 27.12.2005, 09:49 | ||||||||
Еще раз о хранении настроек приложения Способов хранения пользовательских настроек существует достаточно много, и все они имеют свои сильные и слабые стороны. В Java есть стандартный API для хранения настроек Preferences. Preferences представляют стандартный, кроссплатформенный API для хранения настроек приложения. С его помощью можно хранить как глобальные настройки для компьютера, так и индивидуальные для каждого пользователя. При этом разные копии приложения могут работать с общими настройкам. Это удобно для хранения настроек типа расположения панелей инструментов, последних открытых файлов и т.д, т.е. настроек которые будут устанавливаться самим приложением и редактироваться только им же. А если надо чтобы настройки можно было править вручную, иметь несколько конфигураций для запуска, легко переносить настройки с машины на машину, то Preferences не очень хорошо для этого подходят. Для этих целей лучше подходят конфигурационные файлы. Проектом Jakarta была написана библиотека http://jakarta.apache.org/commons/configuration/. С помошью этой библиотеки можно хранить настройки в виде XML, файлов properties, или в JNDI. По идеологии Commons Configuration очень схожа с Preferences, поэтому переход на нее может быть легким. Конфигурация хранится в виде пар: ключ-значение. Для имен ключей лучше придерживаться правил именования классов Java, хотя это и не обязательно, но некоторые конфигураторы могут работать не корректно. Ключи образуют иерархию как и package в Java (т.е. ключ application.user является дочерним, по отношению к ключу application). Рассмотрим для примера работу конфигуратора, для хранения данных использующего XML. При создании конфигуратора, можно указать путь откуда надо загрузить конфигурацию, иначе будет создан "пустой" конфигуратор. Позднее можно загрузить в этот конфигуратор данные с помощью метода load(), методу в качестве параметра передается имя файла откуда надо загрузить данные или производится загрузка данных из файла указанного с помощью setFileName(). Сохранить изменения сделанные в конфигурации можно с помощью метода save(), он принимает те же параметры, что и load(). Кодировку сохраняемого файла, можно задать с помощью setEncoding(). Добавление новых значений в конфигуратор производится с помощью метода addProperty(),изменить значение ключа - setProperty() (если ключ не существует, то он будет создан) , удалить ключ можно с помощью clearProperty(). Можно целиком удалть поддерево ключей - clearTree(). При сохранении данных поддерживается парсинг примитивных типов Java (int, double, boolean). Получить примитивный тип можно с помощью методов get<type>(). Если несколько раз вызвать метод addProperty() для одного и того же названия ключа, то будет создан список значений, получить который можно с помощью getList(). Создадим простенький конфигурационный файл для нашего приложения, пусть в нем хранятся настройки соединения с базой данных, CLASSPATH, и путь к загружаемым ресурсам.
В результате получим такой XML:
Теперь загрузим настройки:
В результате получим:
Все настройки успешно были загружены. |