当我需要捕获从一个API到另一个API的数据流时,我有一个用例。例如,我的代码使用 hibernate 模式从数据库中读取数据,在数据处理过程中,我将一个POJO转换为另一个POJO1并执行更多的处理,然后最终转换为最终结果的 hibernate 对象。简而言之,例如POJO2POJO3到ojit_code。

在Java中,有一种方法可以推断出POJO3的属性是从POJO1的该属性制成/转换而成的。我想寻找一种可以捕获从一种模型到另一种模型的数据流的东西。这个工具可以是编译时,也可以是运行时,我都同意。

我正在寻找一种可以与代码并行运行并在每次运行的基础上提供数据沿袭详细信息的工具。

最佳答案

现在代替Pojos,我将它们称为州!您将拥有一个开始的位置,可以迭代并通过不同的状态转换模型。最后,您拥有一个最终的终端状态,您想将其持久化到数据库中

stream(A).map(P1).map(P2).map(P3)....-> set of B

如果您使用一种称为“事件来源”的技术,则可以推断出是的。那会是什么样子?与其直接将A映射到状态P1和将状态P1映射到状态P2,您将排队所有必要的操作,这些操作足以将A映射到P1并将P1映射到P2,依此类推...如果要在任何情况下恢复P1或P2时间,这仅仅是排队操作的产物。只要您尚未改变数据库状态,就可以随时快退或快退。 P1,P2,P3可以充当快照。

这样,您将能够为该属性重建确切的映射流程。如果要与属性级别一样好,您将如何细化您的操作排队,或者由您决定更多的过程。

这是一篇很好的文章,描述了事件源及其工作方式:https://kickstarter.engineering/event-sourcing-made-simple-4a2625113224

更新:

我可以想到另一种捕获属性更改的技术。您可以安装Pojo-s,这几乎与Hibernate用于增强Pojo的技术相同,并且与跟踪技术相同。然后,您可以捕获和响应Pojo1,Pojo2,Pojo3上的每个setter调用。不知道我是否会那样走....

如果是https://www.cs.helsinki.fi/u/pohjalai/k05/okk/seminar/Aarniala-instrumenting.pdf,这是关于字节码检测的一些荒谬的读入

关于java - 如何在Java代码中监视/检查数据/属性流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54813020/

10-16 09:12
查看更多