我如何使用拦截器在 Spring 控制器中设置字段

How can i use an Interceptor to set a field in Spring Controller

我有一个像下面这样的控制器

@RestController
class TestController{
 private String country;

  public String m1(){}
  public String m2(){}
  public String m3(){}
  public String m4(){}

}

m1 到 m4 的所有方法都需要取自 header 的国家/地区。

有没有一种方法可以为这个控制器的所有方法做到这一点。

我尝试使用拦截器,但是在拦截器执行结束后我无法获取国家/地区。那就是我总是让国家为 null

Spring MVC 提供 @RequestHeader 其中

indicates that a method parameter should be bound to a web request header

适当地注释您的处理程序方法参数

@RequestMapping("/somePath")
public ReturnType example(@RequestHeader("country-header") String country) {
    // use it
}

Spring MVC 堆栈将提取 header 值并使用它来调用您的处理程序方法。