gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:18:07 25 4
gpt4 key购买 nike

我正在使用最新的 Spring Data Rest,并且正在处理“创建之前”事件。我的要求是还捕获提交到模型“Client”的POST端点的HTTP header 。但是,RepositoryEventHandler 的接口(interface)并未公开这一点。

@Component
@RepositoryEventHandler
public class ClientEventHandler {

@Autowired
private ClientService clientService;

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

我们如何处理事件并捕获 HTTP header ?我想访问像 Spring MVC 这样使用 @RequestHeader HttpHeaders headers 的参数。

最佳答案

您可以简单地将请求自动连接到 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());
}
}

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

我实际上在stackoverflow上找到了解决方案:Spring: how do I inject an HttpServletRequest into a request-scoped bean?

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

关于Spring Data Rest - 如何在 @RepositoryEventHandler 中接收 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com