Конфигурация XStream JavaBeanConverter Spring для сериализации с использованием геттера
Я хотел бы зарегистрировать XStream JavaBeanConverter в конфигурации Spring. Я вижу тестовые примеры, где JavaBeanConverter зарегистрирован, как показано ниже.
xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20);
Но как мне установить это в моем весеннем конфиге.
В настоящее время мой весенний конфиг настроен как показано ниже
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" >
<property name="renderedAttributes" value="document" />
</bean>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" p:autodetectAnnotations="true">
<property name="encoding" value="UTF-8" />
</bean>
</property>
<property name="contentType" value="application/xml;charset=UTF-8" />
<property name="modelKey" value="person" />
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
Я использую аннотацию xstream для Alias и Converter.
Я попытался расширить свой пользовательский конвертер из JavaBeanConverter. Он отлично сериализует обычные свойства, но я хочу, чтобы он сериализовал метод getXXX.
public class MyCustomConverter extends JavaBeanConverter {
public MyCustomConverter(Mapper mapper) {
super(mapper);
}
@Override... marshal.. unmarshal... canConvert methods...
}
Большое спасибо!
1 ответ
Добавьте это к определению вашего маршаллерского компонента:
<property name="converters">
<util:list>
<bean class="com.MyBeanConverter">
<constructor-arg value="com.MyBean" index="0" />
</bean>
</util:list>
</property>
А затем определите следующий класс, который будет реализовывать преобразование
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.javabean.JavaBeanConverter;
public class MyBeanConverter extends JavaBeanConverter {
public MyBeanConverter(Class<?> theClass) {
super(new XStream().getMapper(), theClass);
}
}