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 с более низкими приоритетами и возможными уязвимостями безопасности не будут вызываться.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ