【发布时间】:2019-07-02 09:02:57
【问题描述】:
我正在创建一个仅用于休眠实体的模块之一的 maven 多模块项目,问题是两个服务/api/maven_project 正在使用相同的模块,但一个需要审计,但另一个不需要,我如何保持我的代码完整(意味着,不更改或删除@Audited 注释),如何在运行时或编译时启用或禁用环境审计, 因为在我尝试过的所有事情之后,审计都适用于两个 api
我试过了
spring.jpa.properties.hibernate.integration.envers.enabled=false
spring.jpa.properties.hibernate.listeners.envers.autoRegister=false
spring.jpa.properties.hibernate.envers.autoRegisterListeners=false
hibernate.integration.envers.enabled=false
hibernate.listeners.envers.autoRegister=false
hibernate.envers.autoRegisterListeners=false
【问题讨论】:
-
你能排除不需要审计的模块的 Envers 依赖吗? maven.apache.org/guides/introduction/…
-
是的 Jens,但为了做到这一点,我必须更改所有具有 @audited 注释的实体类,并且我想保留它们以便将来使用或启用它们
-
如果将依赖项设置为提供,它们将不会包含在 Spring Boot 可执行 JAR 中,并且不会发生审计,但代码会编译。
-
包含实体的模块将保持依赖关系。字节码中存在的注释不是问题,因为在类路径中找不到的字节码中的注释会被忽略。
-
感谢 Simon 和 Jens,它工作得很好,但是是否有任何其他选项可以通过 application.properties 启用或禁用审核,因为一段时间后,当像 A-> 那样引入另一个子模块/服务时,事情会变得一团糟B->C 其中A是实体模块B是服务(启用或禁用审计),C是另一个以B为依赖的服务(并且C有能力启用或禁用B的审计),只是想保持配置集中
标签: java hibernate-envers auditing