У меня есть приложение, которое контролирует различные развертывания на сервере. Пакет обновлений с конфигурацией - xml может быть отправлен в приложение. Развертывания выполняются в соответствии с XML. Приложение может обновлять себя таким образом. XML десериализован с помощью JAXB.
Он прекрасно работает, пока XML остается неизменным. Но время от времени структура XML должна развиваться. Это может быть что угодно, от добавления новых тегов (что не является проблемой) до переименования или дополнительных вложенных тегов.
Так что, если XML изменен, я могу обновить приложение один раз со "старым XML" , После установки новой версии приложение принимает только новую XML -структуру. Десериализация других версий не удастся. К сожалению, возможно, что есть обновленные пакеты, которые нужно установить, но которые содержат старую конфигурацию - xml. Так что мне нужно быть обратно совместимым, по крайней мере, для одной версии.
Какая лучшая практика для этого? Я думал о номере версии и двух JAVA -объектах (т.е. ConfigModel и ConfigModleDeprecated), и я использую один или другой в соответствии с номером версии. Но это выглядит немного грязно для меня. Есть ли более чистый способ?