小编Lás*_*oek的帖子

在CXF中,为什么要使用除JAXB之外的任何其他绑定?(MTOM附件,Aegis,XMLBeans,......)

我一直在使用Apache CXF,特别是它支持的各种数据绑定:JAXB(默认),MTOM,Aegis和XMLBeans.由于所有这些都得到了支持,我认为每个都有它的优点.我想出了这些:

  • 显然,MTOM是首选涉及大型附件的地方.
  • JAXB依赖于注释,因此在限制类的修改时它不太适合.
  • Aegis没有wsdl2java工具,所以它不太适合"契约优先"开发,即从WSDL开始并从中生成Java代码.
  • 似乎是神盾提供了通过在其声明语法的Java类和XML之间的映射稍微控制 .aegis.xml文件.另一方面,我无法设想JAXB没有做到这一点的任何场景.

我发现这个问题并列JAXB和XMLBeans,但它没有提供全面的概述:

JAXB与Apache XMLBeans

除了这些天真的,先验的考虑之外,你是否有任何血腥经验可以支持使用除JAXB之外的任何其他绑定?我是从CXF的角度问的,但如果想到任何其他选择(例如Castor),请不要犹豫,详细说明.

web-services cxf xmlbeans jaxb aegis

7
推荐指数
1
解决办法
6308
查看次数

使用Jackson反序列化JSON时的隐式默认值

在反序列化各种JSON消息时,我想为某种类型的属性提供默认值.它通常建议简单地指定的类值,但是如果你要在许多类做到这一点,这是容易出错.您可能会忘记一个并最终得到null而不是默认值.我的目的是设置每个属性Optional<T>Optional.absent.由于null正是Optional试图消除的,因此将它们与杰克逊一起使用已被证明是令人沮丧的.

Jackson允许您自定义反序列化过程的大多数功能都集中在作为输入的JSON上,而不是围绕实例化您要反序列化的Object的过程.我似乎最接近一般解决方案是建立自己的解决方案ValueInstantiator,但我还有两个问题:

  • 我怎么让它只实例Optionalabsent,但不与实例化过程的其余部分干扰?
  • 如何将最终结果连接到我的ObjectMapper

更新:我想澄清我正在寻找一个涉及修改包含的每个类的解决方案Optional.我反对违反DRY原则.每次我们添加Optional新的或现有的课程时,我或我的同事都不应该考虑做额外的事情.我希望能够说,"让每个Class中的每个可选字段反序列化,预填充Absent",只需一次,并完成它.

这意味着以下内容:

  • 抽象父类(需要声明)
  • 自定义Builder/Creator/JsonDeserializer(需要在每个适用的类上进行注释)
  • 混入的?我尝试了这个,结合反射,但我不知道如何访问我被混入的类...

java json jackson deserialization

6
推荐指数
1
解决办法
5778
查看次数

标签 统计

aegis ×1

cxf ×1

deserialization ×1

jackson ×1

java ×1

jaxb ×1

json ×1

web-services ×1

xmlbeans ×1