首页 > 解决方案 > Spring Data REST 中 /patch/request 之后的调用逻辑

问题描述

我正在使用 Spring Data REST。如果对一个特定实体有一个 /patch/ 请求,我会做某事(在这种情况下,发送一个带有已保存对象的事件)。由于 Spring Data REST,我没有 /patch/ 方法的代码,我尝试使用 @RepositoryEventHandler 和 @HandleAfterSave 注释

@RepositoryEventHandler
public class MyHandler {
  @HandleAfterSave
  public void handleAfterSave(MyObj obj){
   //Do some after patch logic
  }
 }

它可以工作,但是每次我保存 MyObj 实体时都会调用 handleAfterSave。我只想在通过 /path/ 请求保存对象后调用我的逻辑。我怎样才能实现它?也许通过方面?但是,因为我的项目中没有 GetPatch 方法,所以我不知道如何按方面包装它。

标签: javaspringspring-data-rest

解决方案


实际上,事件处理程序与MyObj类绑定。因此,如果您真的想做到这一点,url/path您可以根据请求路径创建一个处理程序。还有另一种工作似乎正在工作(我还没有测试过。)。

将另一个变量传递给方法签名以获取 url 路径,并据此执行操作: 下面是一个示例:

@RepositoryEventHandler
public class MyHandler {
  @HandleAfterSave
  public void handleAfterSave(MyObj obj, HttpServletRequest request){
   
   String uri = request.getRequestURI();   
   if(uri.equals("expected uri")){
      //Do some after patch logic
   }
  }
 }

让我知道这是否有效。


推荐阅读