0

Spring MVC 可以将 HTTP 标头绑定到 Java 类吗?

我有三个标头,我想将它们编组为 POJO,就像您对表单或请求正文所做的那样。

4

1 回答 1

1

我可以看到两种方法可以使用 Spring 和请求或原型范围的 bean 来实现这一点。

值得首先弄清楚bean 的不同范围以及 Spring 如何为不同范围创建代理(如果您还没有的话)。

第一种方法使用Spring 表达式语言直接引用当前的 HttpServletRequest 实例。

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyClass
{
     @Value({#request.getHeader('headerName')})    
     private String myHeaderValue;

     public String getMyHeaderValue()
     {
            return myHeaderValue;
     }
}

另一种方法是简单地将当前的 HttpServletRequest 作为构造函数参数注入:

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyClass
{

     private String myHeaderValue;

     @Autowired 
     public MyClass(HttpServletRequest httpServletRequest)
     {
           this.myHeaderValue = httpServletRequest.getHeader("headerValue");
     }

     public String getMyHeaderValue()
     {
           return this.myHeaderValue;
     }
 }

然后,您可以根据需要将此 bean 注入您的 Controller 或 Service bean:

@Controller
public class MyController
{
       @Autowired   
       private MyClass myClass;
}

任何一种方法都应该让您实现您想要的,您可以选择最适合您的要求和偏好的方法。

于 2013-10-21T15:19:37.470 回答