сопоставление данных в файлах свойств
-
03-07-2019 - |
Вопрос
У меня есть следующие данные:
User System SubSystem
user1 System1 SubSystem1
user2 System1 SubSystem2
user3 N/A N/A
и мне нужно иметь возможность определять кортеж системы/подсистемы у пользователя.Я должен иметь возможность добавлять пользователей в любое время без перестройки и повторного развертывания системы.
Я знаю, что база данных будет лучшим вариантом, но Я не могу использовать таблицу базы данных.
В настоящее время я сопоставляю его с помощью хэш-карты, но я не хочу, чтобы он был жестко запрограммирован.Я думал об использовании файла свойств, но не могу себе представить, как это реализовать.У кого-нибудь еще есть предложения?
Не то чтобы это имело значение, но я использую JAVA в weblogic 10.3.
Решение
Я бы выбрал что-то простое, например:
user1 = userValue
user1.system = systemValue
user1.system.subsystem= subsystemValue
user2 = userValue
user2.system = systemValue
user2.system.subsystem= subsystemValue
user(id) используется как «первичный» ключ в ваших свойствах и очень простое объединение ваших полей для хранения значений вашей таблицы.Я использую это очень часто:поверьте мне, это гораздо мощнее, чем может показаться :)
Другие советы
Вы можете сделать это с помощью HashMap (как сейчас) и сохранить его, используя XStream.
XStream позволяет сериализовать/десериализовать объекты Java в/из читаемого/редактируемого XML.Затем вы можете записать это (скажем) в файловую систему, и результат можно будет редактировать вручную.
Обратной стороной является то, что это сериализация в XML объекта Java, поэтому она не так очевидна, как файл свойств, который нужно редактировать.Тем не менее, он по-прежнему очень читабелен и легко понятен любому, кто хоть немного разбирается в технических вопросах.Является ли это подходящим решением, зависит от аудитории этого файла.
Для этого проекта я воспользовался решением, предложенным Оливье.Некоторые ограничения проекта (наследие проекта) не позволяют мне использовать, возможно, лучшее решение - использование XStream.
Спасибо за обратную связь, ребята