Как использовать ResourceBundle, чтобы избежать жестко закодированных путей конфигурации в приложениях Java?

StackOverflow https://stackoverflow.com/questions/154728

  •  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(..) — практический помощник в использовании его в теме ресурсов/локации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top