JAXB-Unmarshalling期间的ObjectFactory角色是什么?

Mar*_*rco 9 java jaxb unmarshalling objectfactory

我正在使用JAXB 2.2.2来解析一个简单的XML-REST流.这是一段代码:

JAXBContext jc = JAXBContext.newInstance( "com.example.entities" );
Unmarshaller u = jc.createUnmarshaller();
r = (Response )u.unmarshal( inputStream );
Run Code Online (Sandbox Code Playgroud)

ObjectFactory类:

@XmlRegistry
public class ObjectFactory {

    public Response createRsp() {
        return new Response();
    }
}
Run Code Online (Sandbox Code Playgroud)

回复类:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="rsp")
@XmlType
public class Response { ... }
Run Code Online (Sandbox Code Playgroud)

"com.example.entities"必须包含ObjectFactory类或jaxb.in​​dex.我想使用ObjectFactory类来决定一些pojo初始化,但是从不使用这些类:Response类总是直接由class.newInstance()实例化.这有什么不对吗?

bdo*_*han 11

您可以利用@XmlType注释来控制对象的创建方式:

@XmlType(factoryClass=ObjectFactory.class, factoryMethod="createRsp")
public class Response {
}
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息

  • 我的天哪,我花了最后几个小时寻找如何让我的工厂方法工作的线索,直到我读到了这篇文章。谢谢! (2认同)