0

我想在 Spring 配置中注册 XStream JavaBeanConverter。我看到如下注册 JavaBeanConverter 的测试示例。

    xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); 

但是如何在我的 spring 配置中设置它。

目前我的弹簧配置设置如下

 <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>            

我正在为 Alias 和 Converter 使用 xstream 注释。

我尝试从 JavaBeanConverter 扩展我的自定义转换器。它可以很好地序列化普通属性,但我希望它序列化 getXXX 方法。

public class MyCustomConverter extends JavaBeanConverter  {

    public MyCustomConverter(Mapper mapper) {
        super(mapper);
    }
    @Override... marshal.. unmarshal... canConvert methods...
 }

非常感谢!

4

1 回答 1

0

将此添加到您的编组器 bean 定义中:

    <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); 
   }

}
于 2013-12-05T13:26:06.057 回答