У меня есть несколько классов, которым необходимо загрузить некоторые файлы свойств, и мне было интересно, какие лучшие методы для этого. Я подумал о двух основных подходах:
-
Жестко задайте имя файла свойств в каждом классе, а затем используйте класс
Properties
для загрузки изFileInputStream
, что может быть проблематичным, если кто-то решит изменить имя файла свойств, так как это жестко закодированные в коде.public class A { public A() { Properties p = new Properties().load( new FileInputStream("properties/Aconfig.properties")); String value = p.getProperty("key", ""); } }
-
Создайте метод, который, учитывая имя класса, загружает файл свойств с тем же именем, что и класс. Хотя этот подход не требует жесткого кодирования имени файла свойств, он требует, чтобы мы соблюдали какое-либо соглашение при именовании файлов, что может вызвать путаницу.
public class A { public A() { Properties p = PropertiesHelper.loadFromClassName(A.class.getName()); // here, we **assume** that there is a A.properties file in the classpath. } }
Тем не менее, может быть много других более элегантных подходов, и поэтому я задавал следующие вопросы: i) Каковы наилучшие методы для загрузки файлов свойств в Java?; ii) Используете ли вы какой-либо вспомогательный класс, который заботится о работе?; iii) Где (в коде) вы обычно загружаете файл свойств?
Кроме того, нормально ли для класса "автоматически загружать" его свойства? Или мне нужно передать аргументы, которые мне нужны для конструктора? Проблема передачи аргументов заключается в том, что для некоторых классов существует слишком много (~ 20, которые представляют параметры в статистической модели).