如何使用Spring MVC将会话属性作为方法参数(参数)传递

Boz*_*zho 16 java spring spring-mvc

简而言之,我想要的是:

public String action(@SessionAttribute User user) {..}
Run Code Online (Sandbox Code Playgroud)

代替

public String action(HttpSession session) {
     User user = session.getAttribute("user");
}
Run Code Online (Sandbox Code Playgroud)

主要是为了:

  • 可读性
  • 单元测试

Boz*_*zho 19

我找到了解决方案.

我们的想法是注册自定义WebArgumentResolverAnnotationMethodHandlerAdapter,它可以处理一个自定义的注释- @SessionAttribute(或@SessionParam).

param.getParameterName()如果没有value指定,可以使用发布的代码的一个注释.