Я искал способы сделать простую, простую конфигурацию на основе файлов в Java. Я посмотрел на встроенную в Java Properties
и библиотеку Apache Common Configuration. Для последнего, перегнанный код выглядит следующим образом:
Configurations configs = new Configurations();
Configuration config = null;
try
{
config = configs.properties(new File("config.properties"));
}
catch (ConfigurationException cex)
{
}
long loadQPS = config.getInt("loadQPS");
Проблема, с которой я столкнулся, заключается в том, что я вставляю это в каждый отдельный класс, что является неоптимальным по крайней мере по двум причинам: 1) Я читаю файл один раз для каждого класса, когда я должен прочитать его только один раз. , 2) дублирование кода.
Одним из очевидных решений будет создание класса конфигурации Singleton, к которому я затем получу доступ из любого другого класса. Но, безусловно, это желаемая функция почти во всех случаях использования, поэтому не следует ли включать ее в саму библиотеку конфигурации (я что-то упустил)? Я также подумал об использовании конфигурации Spring, которая может создать класс конфигурации Singleton для меня, но не слишком ли много накладных расходов только для файловой конфигурации? (Сила Spring в DI, насколько я понимаю.)
Что является хорошим решением или лучшей практикой (если есть)?
РЕДАКТИРОВАТЬ : простое статическое решение, предложенное в ответе:
public class ConfigClass {
static Configuration config;
static {
Configurations configs = new Configurations();
Logger sysLogger = LoggerFactory.getLogger("sysLogger");
try
{
config = configs.properties(new File("config.properties"));
}
catch (ConfigurationException cex)
{
sysLogger.error("Config file read error");
}
}
}
Доступ в пакете по ConfigClass.config
.