В этой главе описаны средства поддержки отображения (преобразования) объектов и данных формата XML в Spring. Отображение (преобразование) объектов и данных формата XML (сокращенно O-X-отображение) – это акт преобразования XML-документа в объект или преобразования объекта в XML-документ. Этот процесс преобразования также известен как XML-маршализация или XML-сериализация. В данной главе эти термины используются как взаимозаменяемые.
В части O-X-отображения маршализатор (marshaller) отвечает за сериализацию объекта (графа) в XML. Аналогичным образом демаршализатор десериализует XML в граф объектов. Этот XML может принимать форму документа DOM, входного или выходного потока или SAX-обработчика.
Некоторыми из преимуществ использования Spring для создания Map (отображений) O/X явялются:
-
Простота конфигурирования
-
Согласованные интерфейсы
-
Согласованная иерархия исключений
Простота конфигурирования
Фабрика бобов Spring позволяет легко настроить маршализаторы, без необходимости построения JAXB-контекста, фабрики связывания JiBX и так далее. Можно конфигурировать маршализаторы так же, как и любой другой бин в контексте вашего приложения. Кроме того, для ряда маршализаторов доступна конфигурация на основе пространства имен XML, что делает конфигурирование еще проще.
Согласованные интерфейсы
O-X-отображение в Spring работает через два глобальных интерфейса: Marshaller
и Unmarshaller
. Эти абстракции позволяют с относительной легкостью переходить от одного O-X-фреймворка к другому, при этом классы, выполняющие маршализацию, практически не требуют изменений. Этот подход имеет дополнительное преимущество, позволяя выполнять XML-маршализацию с использованием смешанного подхода (например, часть маршализации выполняется с помощью JAXB, а часть – с помощью XStream) неинтрузивным (не нарушающим целосность) способом, позволяя использовать сильные стороны каждой технологии.
Согласованная иерархия исключений
Spring обеспечивает преобразование исключений из базового инструмента O-X-отображения в собственную иерархию исключений с XmlMappingException
в качестве корневого исключения. Эти исключения во время выполнения оборачивают исходное исключение, поэтому информация не теряется.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ