繁体   English   中英

Spring Data REST - @PrePersist和@HandleBeforeCreate之间的区别?

[英]Spring Data REST - difference between @PrePersist and @HandleBeforeCreate?

我使用Spring Data Rest不是JPA映射。

JPA为在DB中实体的持久性之前调用的方法提供@PrePersist注释。

Spring Data Rest为捕获实体创建事件时要调用的方法提供@HandleBeforeCreate注释。

这似乎与我相当。 我何时应该使用另一个?何时应该使用另一个?

  1. 只有在REST请求进入时才会调用@HandleBeforeCreate,但在实体生命周期中调用@PrePersist。 因此,如果您的调用路径不是通过REST(例如通过直接调用实体管理器或由于JPA impl的内部级联操作),则无法使用@HandleBeforeCreate捕获事件。
  2. 由于Spring调用了@HandleBeforeCreate,因此很容易将它放入bean中并享受所有Spring功能。 实体监听器的生命周期由JPA impl管理,因此通常需要一些技巧才能连接到Spring生态系统。

例如,我使用@HandleBeforeCreate而不是@PrePersist来进行安全检查。 由于第1项,我只想检查暴露休息操作的安全性,由于第2项,我可以轻松地使用@Secured或@PreAuth注释和我的方法进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM