我试图在 spring beans 配置文件中配置一个 jaxb2Marshaller,但我对 Spring 和 JAXB 很陌生,所以我可能会以错误的方式去做。
我想要实现的是同一个 bean,它将编组/解组基于 2 个不同模式的 2 个不同类。也许那是不可能的,因为当我配置并运行我的测试时,它们在配置中的第二类(AccountResponse)中失败了。
这是 XML 配置:
<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="marshallerProperties">
<map>
<entry key="com.sun.xml.bind.namespacePrefixMapper">
<bean id="NamespacePrefixMapperImpl" class="org.lp.soa.controller.xml.LpsNamespacePrefixMapper" />
</entry>
</map>
</property>
<property name="classesToBeBound">
<list>
<value>org.lp.soa.controller.data.request.AccountRequest</value>
<value>org.lp.soa.controller.data.response.AccountResponse</value>
</list>
</property>
<property name="schemas">
<list>
<value>classpath:schema/AccountRequest.xsd</value>
<value>classpath:schema/AccountResponse.xsd</value>
</list>
</property>
</bean>
如果我从配置中注释掉AccountRequest.xsd值,然后再次运行我的测试,第二类 (AccountResponse) 的编组/解组,它们都通过了,如果我取消注释它,我得到错误:org.xml.sax.SAXParseException :cvc-elt.1:找不到元素“accountResponse”的声明。
我是不是走错路了?难道不能用两个模式处理两个类吗?
谢谢,约夫。