繁体   English   中英

向JAXB生成的类添加行为

[英]Adding behaviour to JAXB generated class

我必须在jaxb生成的类中添加一些业务逻辑。 例如,我有以下XML:

<vehicle>
 <car id="20" make="ABC"/>
</vehicle>

<vehicle>
 <motorcycle id="05" make="XYZ"/>
<vehicle>

<vehicle>
 <truck id="34"  make="UVW"/>
</vehicle>

我为此生成了XSD。

现在,我需要实现的是在解组这些类型的任何XML时(也就是说,每当调用汽车,摩托车或卡车的设置者时,它也应该设置我不想添加为XML中的属性的车辆类型)。

或在解组后(我可以通过任何方式知道子元素的QName)。 我已经尝试过如何扩展JAXP-cxf或Hibernate工具生成的Java代码? ,但从未调用覆盖的设置器。

JAXB有一个“后构造”工具(请参阅javadoc )。 只需在您的带注释的类中添加以下内容即可:

void afterUnmarshal(Unmarshaller, Object parent) {
    vehicle.setType(..); // your logic here    
}

您可以创建一个JAXB扩展 但这听起来像是我的开销-每当您解组JAXB对象时,都可以简单地调用一个初始化程序。 就像是:

public class Initializer {
    public static void initialize(Vehicle vehicle) {
       vehicle.setType(..); // your logic here
    }
}

并调用Initializer.initialize(unmarshalledObject)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM