jaxb 拦截器_JAXB中的适配器

jaxb 拦截器

Java XML绑定(又名JAXB)是许多应用程序的一部分,因为它提供了方便的API来将Java与XML编组/解组。

就像这么多区域一样,魔鬼在细节中,就像当人们不得不解组与JAXB不兼容的类时一样。 这样的类由于各种原因而遇到一个人的代码:设计,传统,第三方.........足以说这样的沙粒可能成为任何项目的阻碍。

幸运的是,JAXB设计人员在编写API时必须牢记此用例,因为提供了一个适配器来绕过此类问题。 在这种情况下,将提供一个JAXB兼容类,并在它和不兼容的类之间建立JAXB桥。 这可以通过使用XmlJavaTypeAdapter批注轻松完成:它接受一个在JAXB友好和-不友好世界之间架桥的类参数。 换句话说,它必须实现XmlAdapter <OriginalType,CompatibleType>协定。 然后可以将注释放在不兼容类型的字段上。

一切都很好,网络上的许多资源都介绍了如何做。 las,大多数示例都出于安全考虑,完全忘记解决以下问题:

  • 我要编组(和返回)的班级具有A型字段
  • 类型A具有类型B的关联,而后者又具有类型C的关联,依此类推。
  • 所有这些类型都是第三方
  • 类型A到Y与JAXB兼容,类型Z不兼容

现在事情变得很有趣了......为A型创建适配器已经成为不可能,因为我将不得不为整个树创建结构,这将是一个巨大的时间浪费。

到目前为止,我找到的解决方案是在第三方程序包中创建package-info.java并使用我的适配器对其进行注释。 这很不干净,因为它可能与真实的package-info( 来自第三方库的信息)发生冲突,但是对我而言并非如此(未提供)。 顺便说一句,我很惊讶几乎没有提供者在其库中创建此对象。

有人遇到这个问题并找到了更优雅的解决方案吗?

翻译自: https://blog.frankel.ch/adapters-in-jaxb/

jaxb 拦截器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值