1

我有一个 Jibx bean,它用作 Web 服务的输入和输出。bean 很大很复杂,父子关系很深。Web 服务不返回请求对象,而是返回一个填充了一些属性的新 bean。我想合并我的请求和响应。我尝试使用 Dozer(它只是将我的请求对象替换为响应,即原始请求属性丢失!BeanUtils.copyProperties 同上)。对象图太大太深,无法对所有属性进行 isNull 检查。

我已经考虑将 bean 转换为 XML 并使用 EL4J XML Merge 合并它们任何其他建议。

4

2 回答 2

2

通过“太大太深而无法进行 isNull 检查”,我假设您不想对这些检查进行硬编码。你也不应该。

然而,bean 的美妙之处在于它们可以被检查,你可以编写一个自动检查来检查对象图,检查是否为空,如果没有则更新。

是的,这是 CPU 密集型的。但肯定不会比生成 XML 并尝试合并它更占用 CPU。

于 2009-04-21T16:01:12.067 回答
0

由于对象是 bean,为什么不将 bean 与请求相关联,并且在回复时使用请求 bean?我不提倡将可能只是接口对象的对象推入系统深处,而是保持请求 bean 并使其成为响应 bean。

我也不确定我对深度参数的理解是什么,但是如果输入布局意味着填充响应的逻辑很复杂,您可能需要在计算属性之前构建响应填充代码:因为系统正在确定哪个计算它的属性还可以建立一个策略,将这些属性放回响应 bean。这可能与策略模式一样简单,在更复杂的情况下,您可能会考虑使用字节码修改库。

另一种方法是简化您的界面,使 XML 中的属性相似并删除“深度”:使所有属性相似,然后允许使用简单的循环来管理属性检查和填充。

转换为 XML 在某种程度上破坏了对象首先使用框架。也许,如果 XML 更简单,Jibx 并不是解决问题的最简单方法。你能在你的规范中改变什么?

于 2009-06-04T14:53:16.707 回答