【发布时间】:2016-12-09 00:39:52
【问题描述】:
Spring MVC 控制器方法接受在调用方法之前注入的不同参数。比如HttpServletRequest、HttpServletResponse、java.security.Principal等
@RequestMapping("/test")
public String test(HttpServletRequest req, Principal user){}
如何声明可以注入到控制器方法中的东西?
@RequestMapping("/test")
public String test(MyCustomInjectable myInjectable){}
更多具体案例:
我想在一些 servlet 过滤器中解析 HttpServletRequest 并构造一个将在控制器方法中使用的对象。更准确地说,我将解析 JWT 令牌并访问声明。
【问题讨论】:
-
如果是同一个请求对象,您可以将请求中的每个字段值设置为请求属性,spring会根据请求属性名称自动创建您的自定义对象。如果您稍后在其他请求中需要自定义对象,您可以从请求中获取会话并使用会话属性将自定义对象保存在会话中
标签: java spring spring-mvc dependency-injection spring-boot