java - 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 方法,所以我不知道如何按方面包装它。
解决方案
实际上,事件处理程序与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
}
}
}
让我知道这是否有效。
推荐阅读
- c++ - 如何编写一个返回标题内数组的函数?
- string - 使用索引python访问列表值
- python - 无法从频道中清除消息,discord.py
- python - 如何旋转 timeindex 的值
- swift - 从 Swift 中的 func 返回 void func
- c# - C# AutoMapper - 如果源中不存在,则在 dest 属性中设置默认值
- jquery - 如何使用 ChartJS 呈现具有多个相关数据点的折线图
- javascript - 循环一个javascript函数并将结果推送到一个数组中
- mysql - Mariadb Galera 节点将不会成功重新加入,除非它选择一个特定的节点重新加入
- java - 接口如何从实现中移除依赖关系?