0

Spring config に XStream JavaBeanConverter を登録したいと思います。以下のように 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>            

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 に答える