在春季启动中是否有任何方法可以在任何应用程序点从请求中获取标头? 一些静态的东西会很棒。
请注意,@RequestHeader
对我不起作用,因为我需要在服务层上使用此值。
答案 0 :(得分:7)
您可以在服务层中注入HttpServletRequest
对象,如下所示:
@Autowire
HttpServletRequest request;
private void method() {
request.getHeader("headerName");
}
但请记住,bean HttpServletRequest
具有HTTP请求范围。所以,你不能将它注入异步方法等,因为它会抛出运行时异常:)希望它有所帮助
答案 1 :(得分:0)
我之前一直在搜索相同的问题,我发现您可以像上面所说的那样在@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@的的耦合使用下,才能在RestController方法中使用头参数。那么为什么不将它们定向到您的服务层方法中呢?
@Autowired
ServiceLayerObj serviceLayerObj;
...
@RequestMapping
public YourReturnObj someRestServiceMethod(
@RequestBody SomeObj body,
@RequestHeader(value = "username") String username
){
return serviceLayerObj.yourServiceLayerMethod(body,username);
}