包装器请求类的Spring控制器获取查询参数

包装器请求类的Spring控制器获取查询参数,spring,controller,Spring,Controller,我正在尝试使用Spring4.0构建RESTfulWeb服务 我有一个控制器: @Controller @RequestMapping("test") public class Controller{ @RequestMapping("fetch",method=RequestMethod.GET) @ResponseStatus(value=HttpStatus.OK) @ResponseBody

我正在尝试使用Spring4.0构建RESTfulWeb服务

我有一个控制器:

    @Controller
    @RequestMapping("test")  
    public class Controller{
          @RequestMapping("fetch",method=RequestMethod.GET)
          @ResponseStatus(value=HttpStatus.OK)
          @ResponseBody
          public ResultResponse fetchController(ResultRequest req){
                 if((req.getName).equals("John"))
                     return new ResultResponse(100);
                  else
                     return new ResultResponse(0);
          }
    }
还有我的ResultRequest.class

    public class ResultRequest{
         private String name;
            //getter,setter
    }
如果我点击//host//contextPath/test/fetch的url?name=John

控制器将返回对象ResultResponse(100)

我的问题是,请求参数中没有@RequestParam或其他注释, spring控制器如何知道将查询参数“name”设置为包装类的属性 结果探索


感谢Spring使用了一个接口的实现,该接口用于解析传递给处理程序方法的参数,即使用
@RequestMapping
注释的方法

其中之一是一个。它的javadoc声明

解析用
@modeldattribute
注释的方法参数和句柄 从用
@modeldattribute
注释的方法返回值

模型属性是从模型中获取的,或者如果可能找不到,则从模型中获取 使用默认构造函数(如果可用)创建一旦创建, 通过数据绑定用请求数据填充属性化 如果参数带有注释,也可以应用验证
@javax.validation.Valid

使用
annotationNotRequired=true创建此处理程序时,任何
将非简单类型参数和返回值视为一个模型
具有或不具有
@modeldattribute

Spring注册了两个这种类型的对象。一个用于处理带有
@modeldattribute
注释的参数,另一个用于处理不带注释的参数

进一步阅读: