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获取该值的方法是通过处理程序方法参数获取该值。