I am using JAXB to unmarshall an XML file into a Java object -- standard stuff. Once JAXB has completed this, I'd like a method to be called on the newly created object.
Is there a mechanism to do this? I'd prefer the object, not an external entity, do this to keep construction in one place.
Thanks.
To be able to execute code after unmarshalling took place, you need an Unmarshaller-Listener
However, I'm not sure, if the listener is invoked after the properties are set or before.
NOTE: The listener is available since JAXB-2.0 (JDK-6)
You can simple add the following method to your object definition:
void afterUnmarshal(Unmarshaller u, Object parent) {
...
}
It will be called once the current object has been completely deserialized. See also the documentation about unmarshalling callbacks
In addition to the Unmarshaller.Listener you can add the following methods to your domain model classes themselves.
public void beforeUnmarshal(Unmarshaller unmarshaller, Object parent)
public void afterUnmarshal(Unmarshaller unmarshaller, Object parent)
From: http://java.sun.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
来源:https://stackoverflow.com/questions/976378/how-can-i-have-jaxb-call-a-method-after-it-has-completed-unmarshalling-an-xml-fi