有没有更好的方法在Spring MVC中将cookie传递给在运行时定义cookie名称的端点?

时间:2015-03-27 10:21:22

标签: spring-mvc

我正在使用Spring MVC来生成REST服务。我的大多数@RequestMappings都需要一个包含会话ID的cookie。 cookie的名称取决于部署服务的环境。例如,我在开发环境中使用'dev_session',在生产中使用'prod_session'。

据我所知,这排除了使用@CookieValue,因为名称是常量。我提出的其他选择是:

  • 传入HttpServletRequest并调用getCookies()。这是 非常难看,特别是因为我需要做大约100 请求映射
  • 使用AOP @Around建议获取HttpServletRequest,找到cookie然后将其传递给目标方法。我不确定这是否有效以及我是否必须同时将cookie值和HttpServletRequest作为目标方法的参数,以便我可以使用HttpServletRequest。无论哪种方式,它似乎都不是一个好方法。
  • WebArgumentResolver。这是我提出的最好的选择,我有它的工作。我使用自定义注释@SessionCookie注释参数然后在WebArgumentResolver.resolveArgument()中如果参数具有该注释我返回cookie的值。不幸的是,它打破了我使用的自动生成的文档,因为它无法识别注释(Swagger-springmvc)。对于这么简单的事情,它似乎仍然很难。

所以我的问题是,有没有更好的方法来获取一个只在运行时知道名称的cookie?

0 个答案:

没有答案