处理器映射
@RequestMapping所配置的内容保存到HandlerMapping中,等待请求的到来,通过拦截请求信息与HandlerMapping进行匹配,找到对应的处理器,并将处理器保存及期拦截器保存到HandlerExecutionChain对象中,返回给DispatcherServlet。
RequestMapping源码分析
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
// 配置请求映射名称
String name() default "";
// 通过路径映射
@AliasFor("path")
String[] value() default {};
// 通过路径映射回path配置项
@AliasFor("value")
String[] path() default {};
// 限定响应Http的请求类型
// 默认的情况下,可以响应所有的请求类型
RequestMethod[] method() default {};
// 当存在对应的HTTP参数时才响应
String[] params() default {};
// 限定请求头存在对应的参数时才响应
String[] headers() default {};
// 限定HTTP请求体提交类型,如果 application/json
String[] consumes() default {};
// 限定返回的内容,仅当HTTP请求头中(Accpect)类型中包含指定该类型时才返回
String[] produces() default {};
}
路径是必须配置项,method可以限制HTTP请求的方式。value和path可以定义正则方式匹配多个请求。但在实际开发中不常用,也不便于后期维护。