17.7 JiBX
JiBX 框架提供的解决方案思路与 Hibernate 对于 ORM 的解决方案思路类似:通过一个绑定定义指定了你的 Java 对象与 XML 文件之间互相转换的规则。在准备好绑定并编译了类文件后,一个 JiBX 编译器将会对编译好的类文件进行增强,在其中加入一些辅助代码,并自动添加用于处理在类实例与 XML 文档之间相互转换的操作代码。
请参考 JiBX官方网站 来了解更多信息。Spring 对于框架的集成代码则都在 org.springframework.oxm.jibx 包下面。
17.7.1 JibxMarshaller
JiBXMarshaller 类同时实现了 Marshaller 和 Unmarshaller 接口。它需要使用者设置编组的目的类的类名才能正确工作。设置类名的属性是 targetClass。另外还有一个可选属性是 bingdingName,用户可以通过这个属性配置绑定名。接下来的示例中,我们将绑定 Flight 类:
<beans>
<bean id="jibxFlightsMarshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass">org.springframework.oxm.jibx.Flights</property>
</bean>
...
</beans>
一个 JibxMarshaller 只能处理一个目的类与 XML 的相互转换,如果你需要编组多个类,你必需配置相应数量的 JibxMarshallers bean,然后在 targetClass 里面指定相应各个类的类名。
17.7.2 基于 XML 的配置
jibx-marshaller 标签配置了 org.springframework.oxm.jibx.JibxMarshaller 的实例。以下是一个示例:
<oxm:jibx-marshaller id="marshaller" target-class="org.springframework.ws.samples.airline.schema.Flight"/>
标签的可用属性如下:
属性 | 描述 | 是否必需 |
---|---|---|
id | 编组器的id | no |
target-class | 此编组器所对应的目标类 | yes |
bindingName | 此编组器使用的绑定名 | no |