【问题标题】:XStream JavaBeanConverter Spring config to serialize using getterXStream JavaBeanConverter Spring 配置使用 getter 进行序列化
【发布时间】:2013-05-15 21:19:39
【问题描述】:

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

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

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

目前我的 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...
 }

非常感谢!

【问题讨论】:

    标签: spring jakarta-ee xstream spring-oxm


    【解决方案1】:

    将此添加到您的编组器 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-02-08
      • 1970-01-01
      • 2012-11-18
      • 2013-07-02
      • 2014-10-25
      • 1970-01-01
      • 2016-07-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多