![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Часто встречаю в различных библиотеках файлы *.properties, которые лежат там же, где и классы и в которых записаны настройки программ.
Какова природа этих файлов? Сперва я думал, что эти файлы просто кладутся туда, откуда их можно прочитать при помощи ClassLoader.getResourceAsStream. Но потом я заметил, что в некоторых из этих файлов лежат как бы операторы присваивания на языка Java, с упоминанием классов и полей через точку. Нет ли случайно какой-то встроенной возможности читать такие файлы? Допустим, нет ли такого, что если файл *.properties лежит в заданном месте, то при первой загрузке класса автоматически (без специального кода) инициализируются его статические члены по командам из файла? Или это просто так сделали, чтоб имена параметров говорящими были, но читают их специально-написанные в данном ПО функции? |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Если посмотреть например, Java Desktop Application в Нетбинсе, то там так и сделано - каждый пакет имеет папку resources, куда можно положить проперти файл. Соответственно, IDE заточено под это. Имя проперти файла совпадает с именем класса, для которого предназначено. Возможность читать "встроена" не в JDK, а просто в проект добавляется служебная библиотека для обслуживания этих удобств. Но все равно в коде есть строка соответствующая, которую визард возможно генерирует. Очевидно, и имена параметров тоже считается удобным связывать с их полным путем, через точку. Если вы делаете рефакторинг, скажем, переименовываете класс, то IDE автоматически переименует и проперти файл. Это здорово, когда проперти файл поставляется с jar. Однако для персональных настроек это не удобно. Скажем, персональные настройки каждого клиента хранятся в базе данных на сервере, т.е. отдельно от кода. Если что-то переименовать в коде, то в базе тоже надо все переименовывать, иначе связь через имя нарушается. Это сообщение отредактировал(а) COVD - 5.6.2008, 21:43 |
|||
|
||||
bytes |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 17.10.2006 Где: Baku Репутация: нет Всего: нет |
Подобные файлы встречалось и в JSP+Servlet+Struts
--------------------
?==! or !==? |
|||
|
||||
ecologist |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 2 Всего: 9 |
В JAVA часто используется механизм SPI (Service Provider Interface) - когда для сервиса описан интерфейс, а его реализация может быть представлена различными классами. Т.к. JAVA позволяет загружать классы динамически, то можно подставлять реальные классы для интерфейса, просто прописав их реальные имена в property-файле.
|
|||
|
||||
AlexeyVorotnikov |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Простые текстовые файлы.
Именно для этого туда их и кладут. Нет. Такой фичи нет.
Да, это так. Псмотрите на класс java.util.Properties. Он предназначен для работы с файлами *.properties. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |