Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Что делают файлы *.properties? |
Автор: Dims 5.6.2008, 20:20 |
Часто встречаю в различных библиотеках файлы *.properties, которые лежат там же, где и классы и в которых записаны настройки программ. Какова природа этих файлов? Сперва я думал, что эти файлы просто кладутся туда, откуда их можно прочитать при помощи ClassLoader.getResourceAsStream. Но потом я заметил, что в некоторых из этих файлов лежат как бы операторы присваивания на языка Java, с упоминанием классов и полей через точку. Нет ли случайно какой-то встроенной возможности читать такие файлы? Допустим, нет ли такого, что если файл *.properties лежит в заданном месте, то при первой загрузке класса автоматически (без специального кода) инициализируются его статические члены по командам из файла? Или это просто так сделали, чтоб имена параметров говорящими были, но читают их специально-написанные в данном ПО функции? |
Автор: COVD 5.6.2008, 21:36 | ||
Если посмотреть например, Java Desktop Application в Нетбинсе, то там так и сделано - каждый пакет имеет папку resources, куда можно положить проперти файл. Соответственно, IDE заточено под это. Имя проперти файла совпадает с именем класса, для которого предназначено. Возможность читать "встроена" не в JDK, а просто в проект добавляется служебная библиотека для обслуживания этих удобств. Но все равно в коде есть строка соответствующая, которую визард возможно генерирует. Очевидно, и имена параметров тоже считается удобным связывать с их полным путем, через точку. Если вы делаете рефакторинг, скажем, переименовываете класс, то IDE автоматически переименует и проперти файл. Это здорово, когда проперти файл поставляется с jar. Однако для персональных настроек это не удобно. Скажем, персональные настройки каждого клиента хранятся в базе данных на сервере, т.е. отдельно от кода. Если что-то переименовать в коде, то в базе тоже надо все переименовывать, иначе связь через имя нарушается. |
Автор: bytes 5.6.2008, 21:43 |
Подобные файлы встречалось и в JSP+Servlet+Struts |
Автор: ecologist 6.6.2008, 07:46 |
В JAVA часто используется механизм SPI (Service Provider Interface) - когда для сервиса описан интерфейс, а его реализация может быть представлена различными классами. Т.к. JAVA позволяет загружать классы динамически, то можно подставлять реальные классы для интерфейса, просто прописав их реальные имена в property-файле. |