首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖META-INF\services\org.hibernate.integrator.spi.Integrator

覆盖META-INF\services\org.hibernate.integrator.spi.Integrator
EN

Stack Overflow用户
提问于 2017-11-09 23:39:07
回答 1查看 853关注 0票数 0

我正在使用hibernate envers (4.3.5版本)。使用条件审计(15.8.hibernate envers文档)我继承了创建自己的customerEnversIntegrator的EnversIntegrator。为了让enver使用这个路径,我在META-INF\services\org.hibernate.integrator.spi.Integrator中添加了customerEnversIntegrator路径。它工作得很好!当我将其保留为默认设置,但将应用程序META-INF\services\org.hibernate.integrator.spi.Integrator更改为指向时,该customerEnversIntegrator未被充分使用。所以它实际上不起作用,但是我不希望这个声明在jar级别。我需要从应用程序中覆盖它。因为作为一个项目-我不能控制jar,它可能会被更新等等。

你知道如何在不改变Jar中任何东西的情况下重写这个文件吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-13 22:48:06

不幸的是,Envers的条件审计设置是侵入性的,这正是Envers 6希望采用一种侵入性较小的不同方法的原因。

您可以通过指定Hibernate配置属性来关闭标准Envers Integrator实现,这将导致envers的标准集成器不启动,也不注册标准事件侦听器,等等。

代码语言:javascript
复制
hibernate.listeners.envers.autoRegister=false

然后注册您自己的自定义Integrator,它模仿标准实现,但由于显而易见的原因,您不会检查上面的配置属性是否存在,而且它会注册您的自定义侦听器,而不是标准侦听器。

这应该可以避免手动更改hibernate-envers工件或进行任何构建时库操作。

我很可能会在将来删除此配置选项,因为带注释的条件审计方法将成为此处的首选,并避免强制需要此方法的用户复制内部代码才能使用此类功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档