【问题标题】:Call logic after /patch/request in Spring Data RESTSpring Data REST 中 /patch/request 之后的调用逻辑
【发布时间】:2020-11-19 12:51:10
【问题描述】:

我正在使用 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 方法,所以我不知道如何通过切面来包装它。

【问题讨论】:

    标签: java spring spring-data-rest


    【解决方案1】:

    实际上是与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
       }
      }
     }
    

    让我知道这是否可行。

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 2017-03-14
      • 2019-09-25
      • 2017-12-06
      • 1970-01-01
      • 2017-08-25
      • 2017-07-25
      • 2019-04-01
      • 2017-07-29
      相关资源
      最近更新 更多