handlermethodargumentresolver具体的例子
时间: 2023-09-03 07:13:30 浏览: 131
`HandlerMethodArgumentResolver`是Spring MVC框架中的一种接口,用于将请求中的参数解析成方法参数并填充到方法中。具体例子如下:
假设有一个Controller类,其中有一个方法如下:
```java
@RequestMapping("/user")
public String getUserInfo(User user){
//...
}
```
该方法中有一个参数`User user`,我们希望能够直接将请求中的参数解析成`User`对象并填充到该参数中。这时就可以通过实现`HandlerMethodArgumentResolver`接口来实现。
首先创建一个实现了`HandlerMethodArgumentResolver`接口的类`UserMethodArgumentResolver`,并实现其中的方法:
```java
@Component
public class UserMethodArgumentResolver 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);
User user = new User();
user.setUsername(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
return user;
}
}
```
其中`supportsParameter`方法用于判断当前解析器是否支持该参数类型,这里判断参数类型为`User.class`时返回`true`;`resolveArgument`方法用于将请求中的参数解析成`User`对象并返回。
最后,在Spring配置文件中加入以下配置:
```xml
<mvc:annotation-driven>
<mvc:argument-resolvers>
<bean class="com.example.UserMethodArgumentResolver"/>
</mvc:argument-resolvers>
</mvc:annotation-driven>
```
这样,当有请求调用该Controller中的方法时,就会先经过`UserMethodArgumentResolver`解析器,将请求中的参数解析成`User`对象并填充到方法参数中。
阅读全文