[英]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.