Spring处理器发展史
1、Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。显然现在已经不推荐这么做了
2、Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类。并且有一批注解都是这个时候出来的:
1. @RequestMapping:请求到处理器功能方法的映射规则;
2. @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
3. @ModelAttribute:请求参数到命令对象的绑定;
4. @SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
5. @InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
3、Spring3.0引入RESTful架构风格支持(通过@PathVariable注解和一些其他特性支持),且又引入了更多的注解支持:
1. @CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;
2. @RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
3. @RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
4. @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
5. @ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
6. @ExceptionHandler:注解式声明异常处理器;
7. @PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;
4、Spring3.1使用新的HandlerMapping 和 HandlerAdapter来支持@Contoller和@RequestMapping注解处理器。
- 处理器映射RequestMappingHandlerMapping 和 处理器适配器RequestMappingHandlerAdapter组合
- 对应代替了Spring2.5开始有的DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter
在使用Spring MVC的开发过程中,Handler(就是Controller)是我们需要手动开发的主要内容(其余的都是Spring MVC自动去处理的,开发者基本不用关心~),注解的配置方式比较固定,可以限定请求方式,请求映射到方法,基本可以满足我们的日常需求。
但是如果知道这些controller的模式,比如UrlFilenameViewController这种,可以不用开发或者非常少量开发的情况下,极其快速的定位到handler到页面的映射关系,也是大大的提升了我们的效率。