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

Java 如何使用拦截器在Spring控制器中设置字段,java,spring-mvc,interceptor,Java,Spring Mvc,Interceptor,我有一个像下面这样的控制器 @RestController class TestController{ private String country; public String m1(){} public String m2(){} public String m3(){} public String m4(){} } 所有方法m1到m4都需要从标题中获取国家/地区 对于此控制器的所有方法,是否有这样做的方法 我尝试使用拦截器,但在拦截器执行结束后,我无法获得国家/地区

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

@RestController
class TestController{
 private String country;

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

}
所有方法m1到m4都需要从标题中获取国家/地区

对于此控制器的所有方法,是否有这样做的方法

我尝试使用拦截器,但在拦截器执行结束后,我无法获得国家/地区。也就是说,我总是得到一个空的Spring MVC,它提供

指示应将方法参数绑定到web请求标头

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

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

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

谢谢您的回答。但我只是好奇,如果有一种方法可以对这个控制器的所有请求执行相同的操作的话。就像Grails提供beforeInterceptor一样。@Ekanshratogi我不知道Grails。除非另有规定,
@Controller
bean是单例的。您不会将头值设置为实例字段,因为这样会有线程安全问题的风险。因此,SpringMVC获取该值的方法是通过处理程序方法参数获取该值。