Как сохранить состояние Java-бина в не веб-приложении?
В рамках моей RFT QA Automation я должен сохранить состояние (объект) Java-бина и получить доступ к объекту во всем приложении. Синглтон может не работать здесь, так как это не веб-приложение. Не могли бы вы предложить какой-либо другой подход? хранить состояние Java-бобов.
Ценю твою помощь.
Спасибо
2 ответа
Я не уверен, что понимаю вашу проблему, но почему бы и нет
- сериализовать объекты на диск / базу данных /...
- использовать статическое хранилище (статический синглтон)
По сути, это типичная проблема сериализации / десериализации. В общем, вам нужна возможность записать состояние класса на персистентный слой, а затем иметь возможность восстановить "тот же" экземпляр с персистентного слоя. Существует встроенный механизм Java, который работает через Serializable
интерфейс. Однако он редко используется из-за неудобств. Один из самых популярных способов сделать это - сериализовать экземпляры вашего класса в формат JSON или XML, а затем прочитать его обратно и создать экземпляр из этого формата. Если вам нужно, чтобы текст был удобочитаемым, предпочтительным является XML, в противном случае JSON является обычным выбором. Лучшим инструментом для сериализации JSON является JSON Jackson (FasterXML/jackson). Вот соответствующие ссылки: Json Jackson home. Основным классом, который вам нужно будет использовать, является ObjectMapper. Это простой в использовании. Вот статья с примером. Как только вы получите Json String вашего экземпляра, запишите его в файл или базу данных, а затем прочитайте его и используйте ObjectMapper
воссоздать ваш экземпляр. Это просто и работает очень хорошо