我正在使用最新的 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(使用前将#替换为@)