需要 Javers 和 MyBatis 集成帮助

Javers and MyBatis integration help needed

我在尝试让 MyBatis 和 Javers(Spring)集成和工作时遇到问题。我已经按照 http://javers.org/documentation/spring-integration/ 的说明进行了 Aspect 设置,并注释了我的实体 class 并将其注册到 Javers,并且 MyBatis 接口在适当的方法上正确地注释了 @Repository 和 @JaversAuditable,但是仍然没有让它工作,甚至在 Javers 方面设置断点,但没有触发。

我也采用了另一种方式,使用 MyBatis 插件拦截器,按照 http://www.mybatis.org/mybatis-3/configuration.html#plugins (then used http://www.mybatis.org/spring/xref-test/org/mybatis/spring/ExecutorInterceptor.html 作为提交的基本示例)。然而,虽然它正在触发,但它并没有按照我的预期进行,基本上只是提交方法的一个方面,它采用布尔值而不是包含正在提交的实体,这会让我将它们传递给 Javers。我想我可以在 update/insert MyBatis 方法上添加一个拦截器,然后将其存储在 ThreadLocal 或类似的地方,以便在调用 commit/rollback 时我可以根据需要将其传递给 Javers,但这很麻烦。

我不知道从这里到哪里去,除非有人可以看到我用这两种方法之一错过的东西。

所以在我的困惑中,我意识到由于 MyBatis 为 Mapper 接口生成了具体对象,Spring 似乎从来没有创建过那个对象,只是将最终对象注册为上下文中的 Bean。因此,Javers 永远没有机会在创建 Bean 时对其进行处理,以便进行任何代理或不必要的操作。

所以,愚蠢的我。所以我最终创建了一个 Spring-Data @Repository 层,它主要只是将调用传递给 Mapper。虽然在更新时我正在做一些额外的位,DAO shim 层(我称之为)适用于这些位。