帮助创建与 @PrePersist 和 @PreUpdate 等效的 AspectJ 用于审计用例

发布于 2024-10-15 19:54:47 字数 152 浏览 8 评论 0原文

在JPA中,有@PrePersist和@PreUpdate注解,允许在CRUD操作之前进行操作。 我正在尝试找出与此等效的 ApsectJ。

我的用例是一个由一个团队构建的 JPA 应用程序,现在希望向发生的每个预持久和预更新添加审核方面,而不向原始实体添加生命周期侦听器。

In JPA, there is @PrePersist and @PreUpdate annotations that allow operations before CRUD operations.
I am trying to find out the ApsectJ equivalent to this.

My use case is a JPA application that was built by one team, now would like to add an Audit Aspect to each Pre-Persist and Pre-Update that occurs, without adding a lifecycle listener to the original Entity.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡墨 2024-10-22 19:54:47

如果实体没有 @PrePersist 和 @PreUpdate 方法,您可以使用 AspectJ 类型间声明 (ITD) 来引入这些方法。

public aspect Audit {
    declare parents: @Entity * implements AuditedEntity;

    public interface AuditedEntity {}

    @PrePersist
    public void AuditedEntity.prePersistAuditing() {
       ... auditing logic
    }

    ... similar code for @PreUpdate
}

如果实体已经有方法,您可以建议他们进行审计。

If the entities don't have @PrePersist and @PreUpdate methods, you can use AspectJ intertype declarations (ITDs) to introduce those methods.

public aspect Audit {
    declare parents: @Entity * implements AuditedEntity;

    public interface AuditedEntity {}

    @PrePersist
    public void AuditedEntity.prePersistAuditing() {
       ... auditing logic
    }

    ... similar code for @PreUpdate
}

If the entities already have the methods, you can advise those to perform auditing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文