为多个 Java 包指定 MOXy 运行时
对于分布在多个 Java 包中的域类,有没有办法指定 MOXy 作为我的 JAXB 实现,而不是放置 jaxb.properties
到每个包中?
Is there a way to specify MOXy as my JAXB implementation, for domain classes spread across multiple Java packages, other than putting jaxb.properties
into every single package?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要将 EclipseLink MOXy 指定为 JAXB 提供程序,您需要将 jaxb.properties 放入以下之一域对象的包,传入以引导 JAXBContext。例如,如果您的 JAXBContext 将基于以下 2 个类:
example.foo.Foo
example.bar.Bar
example/foo/jaxb.properties
为了指定应使用 JAXB 的 MOXy 实现,我们将在与 Foo 类相同的包中放置一个具有以下条目的 jaxb.properties 文件。
演示
由于 Foo 和 Bar 类相互引用,最终 JAXBContext 将包含有关它们的元数据,但根据我们创建 JAXBContext 的方式,提供程序可能会有所不同。
运行上面的代码将产生:
To specify EclipseLink MOXy as the JAXB provider you need to put a jaxb.properties in one of the packages for your domain objects, that is passed in to bootstrap the JAXBContext. For example if your JAXBContext will be based on the following 2 classes:
example.foo.Foo
example.bar.Bar
example/foo/jaxb.properties
To specify that the MOXy implementation of JAXB should be used we will put a jaxb.properties file with the following entry in the same package as the Foo class.
Demo
Since the Foo and Bar classes reference each other, ultimately the JAXBContext will contain metadata about both of them, but based on how we create the JAXBContext the provider can be different.
Running the above code will produce: