Как использовать ResourceBundle, чтобы избежать жестко закодированных путей конфигурации в приложениях Java?
-
03-07-2019 - |
Вопрос
Я хотел бы устранить зависимости от жестко запрограммированных путей для данных конфигурации в моих приложениях Java. Я понимаю, что использование ResourceBundle поможет мне использовать загрузчик классов для поиска ресурсов.
Может ли кто-нибудь сказать мне, как заменить жестко запрограммированный путь к ресурсу (скажем, файл данных конфигурации .properties, требуемый классом) с соответствующим использованием ResourceBundle?Простой понятный пример, если возможно, спасибо всем.
Решение
До Java 6 ResourceBundle обычно позволял:
- Строки из группы локализованных файлов свойств, используя PropertyResourceBundle
- Объекты из группы локализованных классов, используя ListResourceBundle
Java 6 поставляется с ResourceBundle.Control класс, который открывает дверь к другим источникам ResourceBundles, например:
- XML-файлы (см. пример 2 в Javadoc)
- Строки базы данных
Надеюсь это поможет.
Другие советы
Вы захотите изучить Resource.getBundle(строка).Вы передаете ему полное имя ресурса в пути к классам для загрузки в виде файла свойств.
Вам не нужен ResourceBundle.Простой объект Properties может выполнить эту работу.Просто используйте загрузчик классов, чтобы получить входной поток для вашего файла свойств, и используйте его для загрузки значений.Если вам необходимо обрабатывать более сложные пользовательские конфигурации, используйте команду настройки API.
С уважением
Хитрость Resource.getBundle(..) заключается в использовании загрузчика классов.Вы можете загрузить все, что находится в вашем пути к классам, получив доступ к нему через this.getClass().getClassLoader().Resource.getBundle(..) — практический помощник в использовании его в теме ресурсов/локации.