XStream – это простая библиотека для сериализации объектов в XML и обратно. Она не требует никакого отображения и генерирует чистый XML.

Для получения дополнительной информации о XStream см. веб-сайт XStream. Интеграционные классы Spring находятся в пакете org.springframework.oxm.xstream.

Использование XStreamMarshaller

XStreamMarshaller не требует конфигурирования и может быть настроен непосредственно в контексте приложения. Для дальнейшей настройки XML можно задать Map псевдонимов, который состоит из строковых псевдонимов, отображенных в класс, как показано в следующем примере:

<beans>
    <bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
        <property name="aliases">
            <props>
                <prop key="Flight">org.springframework.oxm.xstream.Flight</prop>
            </props>
        </property>
    </bean>
    ...
</beans>

По умолчанию XStream позволяет произвольным классам быть немаршализованными, что может привести к пагубному воздействию сериализации Java. Поэтому не рекомендуем использовать XStreamMarshaller для демаршализации XML из внешних источников (то есть из Web), так как это может привести к уязвимостям в безопасности.

Если вы решили использовать XStreamMarshaller для демаршализации XML из внешнего источника, установите свойство supportedClasses для XStreamMarshaller, как показано в следующем примере:

<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
    <property name="supportedClasses" value="org.springframework.oxm.xstream.Flight"/>
    ...
</bean>

Таким образом вы обеспечиваете, что исключительно зарегистрированные классы будут допущены к демаршализации.

Кроме того, вы сможете зарегистрировать кастомные преобразователи, чтобы убедиться, что исключительно ваши поддерживаемые классы могут быть демаршализированы. Возможно, вам понадобится добавить CatchAllConverter в качестве последнего преобразователя в списке в дополнение к преобразователям, явным образом поддерживающие классы предметной области, которые и должны поддерживаться. В результате не стандартные конвертеры XStream с более низкими приоритетами и возможными уязвимостями безопасности не будут вызываться.

Обратите внимание, что XStream – это библиотека сериализации XML, а не библиотека привязки данных. Поэтому она имеет ограниченную поддержку пространства имен. Вследствие этого она не подходит для использования в веб-службах.