Spring Data Rest - 如何在 @RepositoryEventHandler 中接收标头

2024-02-01

我正在使用最新的 Spring Data Rest,并且正在处理该事件”创建之前“。我的要求是还捕获提交给POST模型的端点“Client”。但是,该界面存储库事件处理程序并没有暴露这一点。

@Component
@RepositoryEventHandler
public class ClientEventHandler {

  @Autowired
  private ClientService clientService;

  @HandleBeforeCreate
  public void handleClientSave(Client client) {
    ...
    ...
  }
}

我们如何处理事件并捕获 HTTP 标头?我想访问像 Spring MVC 这样的参数,它使用@RequestHeader HttpHeaders 标头.


您可以简单地将请求自动连接到 EventHandler 的字段

@Component
@RepositoryEventHandler
public class ClientEventHandler {
    private  HttpServletRequest request;

    public ClientEventHandler(HttpServletRequest request) {
        this.request = request;
    }

    @HandleBeforeCreate
    public void handleClientSave(Client client) {
        System.out.println("handling events like a pro");
        Enumeration<String> names = request.getHeaderNames();
        while (names.hasMoreElements())
            System.out.println(names.nextElement());
    }
}

在给出的代码中,我使用了构造函数注入,我认为这是最干净的,但是字段或 Setter 注入应该也同样有效。

我实际上在stackoverflow上找到了解决方案:Spring:如何将 HttpServletRequest 注入到请求范围的 bean 中? https://stackoverflow.com/questions/3320674/spring-how-do-i-inject-an-httpservletrequest-into-a-request-scoped-bean

哦,我刚刚注意到@Marc 在评论中提出了这个......但我实际上尝试过:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data Rest - 如何在 @RepositoryEventHandler 中接收标头 的相关文章

随机推荐