1. 概述
SpringMVC 为我们提供了@CookieValue 来注入 cookie 某一个 key 的值,但我们常需要@RequestBody 一样,把 Cookie 组装成一个 pojo 对象。
这篇教程将会演示我们怎样自定义一个 HandlerMethodArgumentResolver 完成从 Cookie 组装 pojo 对象的需求。
2. 自定义 HandlerMethodArgumentResolver
2.1 定义 Annotation
我们先定义一个 Annotation,叫 CookieObject。
1 | (ElementType.PARAMETER) |
2.2 实现 HandlerMethodArgumentResolver 接口
再定义个 CookieObjectMethodArgumentResolver 类,实现 HandlerMethodArgumentResolver 接口
HandlerMethodArgumentResolver 有两个 method.
1 | boolean supportsParameter(MethodParameter parameter); |
返回 true/false,表示 resolver 是否支持处理该参数,我们将在他的实现里,判断参数是否携带@CookieObject.
1 | Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, |
组装参数的实现逻辑。
来,让我们看一下具体的实现
1 | public class CookieObjectMethodArgumentResolver implements HandlerMethodArgumentResolver { |
2.3 加入 argumentResolvers 列表
最后再 SpringMVC 的配置中把我们定义的 CookieObjectMethodArgumentResolver 实例化后加入 argumentResolvers 列表。
1 |
|
3. 使用
3.1 定义一个 pojo
1 |
|
3.2 在 Controller 中接收
1 | "/testCookieObject") ( |