簡體   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