HandlerMethodArgumentResolver 怎么用的?
时间: 2024-01-10 11:18:19 浏览: 69
Handler的介绍和使用方法
HandlerMethodArgumentResolver 是 Spring MVC 中的一个接口,用于解析 Controller 方法中的参数。我们可以通过实现该接口来自定义参数解析器,以满足特定的业务需求。
使用 HandlerMethodArgumentResolver 需要以下步骤:
1. 实现 HandlerMethodArgumentResolver 接口,并实现 supportsParameter 和 resolveArgument 方法。
2. 在 WebMvcConfigurer 中注册自定义的 HandlerMethodArgumentResolver。
下面是一个简单的示例:
```java
public class UserArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().equals(User.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
String username = request.getParameter("username");
String password = request.getParameter("password");
return new User(username, password);
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new UserArgumentResolver());
}
}
```
在上面的示例中,我们实现了一个 UserArgumentResolver,用于解析 Controller 方法中的 User 参数。在 supportsParameter 方法中,我们判断参数类型是否为 User 类型;在 resolveArgument 方法中,我们从 HttpServletRequest 中获取 username 和 password 参数,并返回一个新的 User 对象。
阅读全文