来自 JAXBContext 的 Javadoc:
客户端应用程序通常使用其中一种获取此类的新实例
newInstance 方法有两种样式,尽管还有其他特殊形式的
可用方法:
JAXBContext.newInstance("com.acme.foo:com.acme.bar")
JAXBContext 实例是从冒号分隔的 Java 包列表中初始化的
名字。每个 java 包都包含 JAXB 映射类、模式派生类和/或
用户注释类。此外,java 包可能包含 JAXB 包注释
必须处理。(参见 JLS 第 3 版,第 7.4.1 节。包注释)。
JAXBContext.newInstance(com.acme.foo.Foo.class)
JAXBContext 实例使用作为参数传递的类进行初始化,并且
可以从这些类静态访问的类。见 newInstance(Class...)
详情。
您可以使用共享上下文并使用包名称列表对其进行初始化。
代码示例:
package test.jaxb.one;
@XMLRootElement
@XMLType(name = "test.jaxb.one.SimpleObject")
@XMLAccessorType(XMLAccessType.FIELD)
public class SimpleObject implements Serializable {
private static final long serialVersionUID = 54536613717262557148L;
@XmlElement(name = "Name")
private String name;
// Constructor, Setters/Getters
}
和这个:
package test.jaxb.two;
@XMLRootElement
@XMLType(name = "test.jaxb.two.SimpleObject")
@XMLAccessorType(XMLAccessType.FIELD)
public class SimpleObject implements Serializable {
private static final long serialVersionUID = -4073071224211934153L;
@XmlElement(name = "Name")
private String name;
// Constructor, Setters/Getters
}
最后:
public class JAXBTest {
@Test
public void testContextLoad() throws Exception {
final JAXBContext context = JAXBContext
.newInstance("test.jaxb.one:test.jaxb.two");
Assert.assertNotNull(context);
}
}