将`@ PathVariable`注入到请求范围的bean

时间:2019-06-03 16:33:05

标签: java spring-mvc scope request

我想传播一些路径变量作为请求范围bean的一部分。 我希望这个bean是不可变的,并且我不想手动解析路径,而是依靠javax.servlet的东西

现在,我看到了在Provider<MyPathVariables>中设置@ControllerAdvice的解决方案 但我不喜欢使MyPathVariables可变。

另一个选择是将HttpServletRequest注入到我的bean构造函数中并手动解析路径,我也不喜欢这种双重工作,尤其是我不喜欢依赖javax.servlet春季应用。

还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

Spring创建一个map属性,该属性包含按名称在请求上键入的路径参数。属性名称存储在此常量中:

org.springframework.web.servlet.HandlerMapping#URI_TEMPLATE_VARIABLES_ATTRIBUTE

您可以使用以下方法获取它:

Map<String, String> getPathParameters(HttpServletRequest request){
    return (Map<String, String>) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE)
}